2016-10-30 5 views
-5

이것은 내 클래스 Igra이며 기본 특성을가집니다.엔티티 프레임 워크 C#

public class Igra 
{ 
    public int IgraId { get; set; } 
    public string imeIgre { get; set; } 

    public string zvrstIgre { get; set; } 

    public virtual List<Prodajalna> Prodajalna { get; set; } 
} 

이것은 내 클래스 Prodajalna이며, 기본 속성도 있습니다.

public class Prodajalna 
{ 
    public int ProdajalnaId { get; set; } 
    public string imeProdajalne { get; set; } 

    public string naslovProdajalne { get; set; } 

    public int IgraId; 
    public virtual Igra igra{get;set; 
} 

이들은 모두 ASMX 서비스를 통해 설정됩니다. 이제 Entity Framework 컨텍스트에서이 작업을 수행 할 때 :

Igra i1 = new Igra() { imeIgre = "WoW", zvrstIgre = "MMORPG", 
         Prodajalna = new List<Prodajalna>() 
        }; 
Igra i2 = new Igra() { imeIgre = "LoL", zvrstIgre = "MOBA", 
         Prodajalna = new List<Prodajalna>() }; 
Igra i3 = new Igra() { imeIgre = "Diablo", zvrstIgre = "heh", 
         Prodajalna = new List<Prodajalna>() }; 

i1.Prodajalna.Add(new Prodajalna() { imeProdajalne = "Bolha", 
            naslovProdajalne = "Maribor" }); 
i1.Prodajalna.Add(new Prodajalna() { imeProdajalne = "Nekaj", 
            naslovProdajalne = "Ljubljana" }); 

i2.Prodajalna.Add(new Prodajalna() { imeProdajalne = "Nekaj2", 
            naslovProdajalne = "Koper" }); 

i3.Prodajalna.Add(new Prodajalna() { imeProdajalne = "Nekaj2", 
            naslovProdajalne = "Maribor" }); 
i3.Prodajalna.Add(new Prodajalna() { imeProdajalne = "Nekaj", 
            naslovProdajalne = "Ljubljana" }); 
i3.Prodajalna.Add(new Prodajalna() { imeProdajalne = "Nekaj2", 
            naslovProdajalne = "Koper" }); 

그래서 여기에 몇 가지 게임과 상점이 추가되었습니다. 지금은이 기능을 실행 한 후 :

List<Prodajalna> vse_prodajalne = gameshop.izpisi_vse_prodajalne(); 

foreach (Prodajalna p in vse_prodajalne) 
    Console.WriteLine(p.imeProdajalne); 

모든 상점을 작성하는 것, 그래서 프로그램을 작성합니다 :

Bolha 
Nekaj 
Nekaj2 
Nekaj 
Nekaj2 

문제는 단지 밖으로 작성해야한다는 것입니다 :

Bolha 
Nekaj 
Nekaj2 

내 데이터베이스에는 중복되어 있습니다.

UPDATE 1/1 나는 내 코드를 업데이트하지만 여전히 문제는 이러한 2 개 라인입니다

public class ProdajalnaVsebujeIgroContext : DbContext 
    { 
     public DbSet<Igra> Igre { get; set; } 
     public DbSet<Prodajalna> Prodajalne { get; set; } 

     public ProdajalnaVsebujeIgroContext()//help 
     { 
      Database.SetInitializer<ProdajalnaVsebujeIgroContext>(new PVIInit()); 
      this.Configuration.ProxyCreationEnabled = false; 
      this.Configuration.LazyLoadingEnabled = false; 
     } 


     public class PVIInit : DropCreateDatabaseAlways<ProdajalnaVsebujeIgroContext> 
     { 
      protected override void Seed(ProdajalnaVsebujeIgroContext context) 
      { 

       var p = new Prodajalna() { imeProdajalne = "Nekaj2", naslovProdajalne = "Koper" }; 
       ProdajalnaVsebujeIgroContext. 
       context.SaveChanges(); 
       context.Prodajalne.Add(p); 


       Igra i1 = new Igra() { imeIgre = "WoW", zvrstIgre = "MMORPG", Prodajalna = new List<Prodajalna>() }; 
       Igra i2 = new Igra() { imeIgre = "LoL", zvrstIgre = "MOBA", Prodajalna = new List<Prodajalna>() }; 
       Igra i3 = new Igra() { imeIgre = "Diablo", zvrstIgre = "heh", Prodajalna = new List<Prodajalna>() }; 

       i1.Prodajalna.Add(new Prodajalna() { imeProdajalne = "Bolha", naslovProdajalne = "Maribor" }); 
       i1.Prodajalna.Add(new Prodajalna() { imeProdajalne = p.imeProdajalne, naslovProdajalne = "Ljubljana" }); 

       i2.Prodajalna.Add(new Prodajalna() { imeProdajalne = p.imeProdajalne, naslovProdajalne = "Koper" }); 

       i3.Prodajalna.Add(new Prodajalna() { imeProdajalne = p.imeProdajalne, naslovProdajalne = "Maribor" }); 
       i3.Prodajalna.Add(new Prodajalna() { imeProdajalne = "Nekaj", naslovProdajalne = "Ljubljana" }); 

       i3.Prodajalna.Add(new Prodajalna() { imeProdajalne = p.imeProdajalne, naslovProdajalne = "Koper" }); 

       context.Igre.Add(i1); 
       context.Igre.Add(i2); 
       context.Igre.Add(i3); 
       base.Seed(context); 
+0

그리고 ... 귀하의 질문은 ...? – Amy

+0

어떻게 내 질문의 끝에 명시된대로 그 한 번만 작성됩니다 확인 –

답변

0

작동하지 않습니다 :

i2.Prodajalna.Add(new Prodajalna() { imeProdajalne = "Nekaj2", naslovProdajalne = "Koper" }); 
i3.Prodajalna.Add(new Prodajalna() { imeProdajalne = "Nekaj2", naslovProdajalne = "Koper" }); 

당신이 정말 원하는 것은 단일 Prodajalna을 만들고 다시 사용하십시오. 이것을 달성하는 가장 간단한 방법은 객체를 먼저 저장하고 다시 객체를 사용하는 것입니다.

var p = new Prodajalna() { imeProdajalne = "Nekaj2", naslovProdajalne = "Koper" }; 
_dbContext.Prodajalna.Add(p); 
_dbContext.Save(); 

i2.Prodajalna.Add(p); 
i3.Prodajalna.Add(p); 
+0

무엇 _dbContext 및 _datacontext 무엇입니까? –

+0

죄송합니다, 그 같은 것은, 내 대답을 업데이 트되었습니다. _dbContext는 EF 데이터 컨텍스트입니다. 'public class YourNameHere : DbContext' – jhilden

+0

내 컨텍스트 이름은 ProdajalnaVsebujeIgroContext이고, .Prodajalna를 찾지 못한다면, 그 함수는 equals와 ReferenceEquals 인 두 가지 함수 만 가지고 있습니다. –