插入也映射到视图的实体



我是实体框架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()

相关内容

  • 没有找到相关文章

最新更新