以下是例外:
支持'ScannerContext'上下文的模型自从以来发生了变化 数据库已创建。考虑使用Code First Migrations进行更新 数据库(http://go.microsoft.com/fwlink/?LinkId=238269)。
每次运行我的应用程序时都会得到这个。我无法弄清楚这意味着什么。我认为这意味着某些东西没有正确映射,但我无法弄清楚是什么。我正在使用代码第一个模型,我有一个现有的数据库,我想完全自定义映射。现在,我的类中的所有内容都与我的数据库名称相同,以消除可能的限制。
当我尝试将.Add()
实体添加到上下文时抛出异常。
数据库中的实体
我的DataLayer中的实体
public class EAsset
{
public int i_GID { get; set; }
public EAssetType Type { get; set; }
public EOrgEnvironment Environment { get; set; }
public EUser Contact { get; set; }
public string s_Name { get; set; }
public string s_Role { get; set; }
public DateTime d_Added { get; set; }
public DateTime d_LastUpdated { get; set; }
public bool b_Retired { get; set; }
public EAsset()
{
Type = new EAssetType();
Environment = new EOrgEnvironment();
Contact = new EUser();
d_Added = DateTime.Now;
d_LastUpdated = DateTime.Now;
}
}
上下文对象(尝试使用表映射和键分配)
public class ScannerContext : DbContext
{
public ScannerContext()
: base("LabDatabase") { }
public DbSet<EAsset> EAssets { get; set; }
public DbSet<EAssetType> EAssetTypes { get; set; }
public DbSet<EOrgEnvironment> EOrgEnvironments { get; set; }
public DbSet<EUser> EUsers { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<EAsset>().HasKey(k=>k.i_GID).ToTable("t_Assets");
modelBuilder.Entity<EAssetType>().HasKey(k => k.i_ID).ToTable("t_Asset_Types");
modelBuilder.Entity<EOrgEnvironment>().HasKey(k => k.i_ID).ToTable("t_Org_Environments");
modelBuilder.Entity<EUser>().HasKey(k => k.i_ID).ToTable("t_Users");
base.OnModelCreating(modelBuilder);
}
}
该计划
class Program
{
static void Main(string[] args)
{
EAsset Entity = new EAsset { s_Name = "jewri-pc" };
var sContext = new ScannerContext();
sContext.EAssets.Add(Entity);
sContext.SaveChanges();
}
}
答案 0 :(得分:4)
对于EF运行时版本4.0.3 /版本4.0
public class ScannerContext : DbContext
{
public ScannerContext()
: base("LabDatabase") { }
...
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
Database.SetInitializer<ScannerContext>(null); // <--- This is what i needed
...
base.OnModelCreating(modelBuilder);
}
}
安装完该代码后,我现在正在追逐与模型中所有关系相关的错误。 FK约束强迫我添加缺少的关系项。
在此处找到信息。他们解释了重要性。
The model backing the <Database> context has changed since the database was created
答案 1 :(得分:0)
启用 - 迁移--ContextTypeName EmployeeProject.Models.DepartmentContext
表示您必须编写项目名称。模型.Context名称
它会起作用。