Entity framework &引用;ReferentialConstraint中的依赖属性映射到存储生成的列";换身份证
形势 我已经广泛地(在某某和其他地方)寻找了这个问题的答案,我知道在这个标题下有很多关于某某的问题 我有一个工作正常的表映射和模型。然后更改了模式(我没有对数据库的直接控制权),引入了一个新的主键,旧的主键成为另一个表的外键我认为这是问题的核心,因为似乎没有其他实体存在问题 映射 下面是映射我的实体的方法(从OnModelCreating调用) 集成测试 我删除了很多结构,希望能把它弄清楚。测试非常简单Entity framework &引用;ReferentialConstraint中的依赖属性映射到存储生成的列";换身份证,entity-framework,entity-framework-4,entity-framework-5,Entity Framework,Entity Framework 4,Entity Framework 5,形势 我已经广泛地(在某某和其他地方)寻找了这个问题的答案,我知道在这个标题下有很多关于某某的问题 我有一个工作正常的表映射和模型。然后更改了模式(我没有对数据库的直接控制权),引入了一个新的主键,旧的主键成为另一个表的外键我认为这是问题的核心,因为似乎没有其他实体存在问题 映射 下面是映射我的实体的方法(从OnModelCreating调用) 集成测试 我删除了很多结构,希望能把它弄清楚。测试非常简单 [TestMethod] public void ThenThingWill
[TestMethod]
public void ThenThingWillBePersisted()
{
var thing = new Thing()
{
OldId = metaDataObject.Id,
Document = new byte[] { 42 },
FileName = "foo.jpg",
ContentType = "image/jpeg"
};
context.Things.Add(thing);
context.SaveChanges();
}
此测试生成错误“ReferentialConstraint中的依赖属性映射到存储生成的列。列:'NewId'”,内部异常指向问题所在的NewId。它在SaveChanges()调用时执行此操作
诚然,我使用nHibernate的经验要比使用实体框架的经验丰富得多,但我确信我的映射和模型设置正确
有人见过这个问题吗?你是如何解决的
public class Thing
{
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
//This used to be the PK, its names (Property AND Column) have not changed
public int OldId { get; set; }
//The column name for FileName changed to something else
public string FileName { get; set; }
//Unchanged
public byte[] Document { get; set; }
public string ContentType { get; set; }
//Navigation Property
public ThingMetaData MetaDataOnThing { get; set; }
}
[TestMethod]
public void ThenThingWillBePersisted()
{
var thing = new Thing()
{
OldId = metaDataObject.Id,
Document = new byte[] { 42 },
FileName = "foo.jpg",
ContentType = "image/jpeg"
};
context.Things.Add(thing);
context.SaveChanges();
}