2015-05-13 19 views
0

我是實體框架6的新手,因此它可能在如何提出這個問題上有點困難,但基本上我有一個像這樣設置的實體配置:插入也映射到視圖的實體

public class EntityExampleConfiguration : EntityTypeConfiguration<Entity> 
{ 
    public EntityExampleConfiguration() 
    { 
     Map(f => 
      { 
       f.Properties(p => new 
       { 
        p.ID, 
        p.Status 
        p.Filed 
        p.By, 
        p.Title, 
        p.Waiver, 
        p.Notes, 
        p.Type 
       }); 
       f.ToTable("EntityTable"); 
      }) 
     .Map(f => 
      { 
       f.Properties(p => new 
       { 
        p.EntityID, 
        p.EntityName, 
        p.County, 
        p.Hash 
       }); 
       f.ToTable("View"); 
      }); 

     HasKey(f => f.ID); 

     Property(f => f.ID).HasColumnName("ExID"); 
     Property(f => f.EntityID).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Computed); 
     Property(f => f.EntityName).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Computed); 
     Property(f => f.County).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Computed); 
     Property(f => f.Hash).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Computed); 

    } 
} 

EntityExampleConfiguration用的圖(View)結合的表(EntityTable)。我的問題(我相信),是因爲這個方法設置了,當我嘗試插入一些它不能插入:

Db.Entry(EntityObjectToInsert).State = EntityState.Added; 
Db.Entity.Attach(EntityObjectToInsert); 
Db.SaveChanges(); 

我沒有得到一個異常或任何東西,我的程序公正繼續執行,但如果我在嘗試保存後停在斷點處,則EntityObjectToInsert.ID仍爲-1(創建對象時爲默認值),但它不在我的表中。

我懷疑這個視圖與這個有關,但是如果它是如此的話,找不到任何好的信息。我能夠將數據加載到模型中並進行更新,但插入是我構建到應用程序中的新功能,它是唯一不起作用的功能。

回答

0

如果您有一個您知道已存在於數據庫中的實體,但當前沒有被上下文跟蹤,那麼您可以告訴上下文使用DbSet上的Attach方法跟蹤該實體。該實體將在上下文中處於未更改狀態。

- https://msdn.microsoft.com/en-us/data/jj592676.aspx


如果要細到剛剛設置的StateAdded,甚至更好,使用DbSet<YourEntity>.Add()。您不應同時設置State並執行Attach()