2016-10-30 10 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 

私のデータベースでは冗長です。あなたが本当に欲しい

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

されています。私は自分のコードを更新しましたが、それはまだ問題は、これらの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

動作しない

UPDATE 1/1 Prodajalnaを1つ作成して再使用してください。これを達成する最も簡単な方法は、オブジェクトを最初に保存し、それを再利用することです。

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の2つの関数しかありません –

関連する問題