我是实体框架6的新手/p>
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
将表(EntityTable
)与视图(View
)结合在一起。我的问题(我相信)是,由于设置此设置的方式,当我尝试插入它不插入的内容时:
Db.Entry(EntityObjectToInsert).State = EntityState.Added;
Db.Entity.Attach(EntityObjectToInsert);
Db.SaveChanges();
我没有例外或其他任何东西,我的程序只是继续执行,但是如果我在尝试保存后停在断点,EntityObjectToInsert.ID
仍然为-1(创建对象时默认为-1),并且是不在我的桌子里。
我怀疑该视图与此有关,但找不到有关它如何的好信息。我能够将数据加载到模型和更新中,但是插入是我正在构建的应用程序中的一个新功能,这是唯一不起作用的功能。
如果您知道数据库中已经存在的实体,但是目前尚未通过上下文跟踪,则可以告诉上下文使用DBSET上的附加方法跟踪实体。实体将在上下文中处于不变状态。
- https://msdn.microsoft.com/en-us/data/jj592676.aspx
如果将State
设置为Added
,甚至更好,则使用DbSet<YourEntity>.Add()
是否可以。您不应该同时设置State
并执行Attach()
。