Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Entity framework &引用;ReferentialConstraint中的依赖属性映射到存储生成的列";换身份证_Entity Framework_Entity Framework 4_Entity Framework 5 - Fatal编程技术网

Entity framework &引用;ReferentialConstraint中的依赖属性映射到存储生成的列";换身份证

Entity framework &引用;ReferentialConstraint中的依赖属性映射到存储生成的列";换身份证,entity-framework,entity-framework-4,entity-framework-5,Entity Framework,Entity Framework 4,Entity Framework 5,形势 我已经广泛地(在某某和其他地方)寻找了这个问题的答案,我知道在这个标题下有很多关于某某的问题 我有一个工作正常的表映射和模型。然后更改了模式(我没有对数据库的直接控制权),引入了一个新的主键,旧的主键成为另一个表的外键我认为这是问题的核心,因为似乎没有其他实体存在问题 映射 下面是映射我的实体的方法(从OnModelCreating调用) 集成测试 我删除了很多结构,希望能把它弄清楚。测试非常简单 [TestMethod] public void ThenThingWill

形势

我已经广泛地(在某某和其他地方)寻找了这个问题的答案,我知道在这个标题下有很多关于某某的问题

我有一个工作正常的表映射和模型。然后更改了模式(我没有对数据库的直接控制权),引入了一个新的主键,旧的主键成为另一个表的外键我认为这是问题的核心,因为似乎没有其他实体存在问题

映射

下面是映射我的实体的方法(从OnModelCreating调用)

集成测试

我删除了很多结构,希望能把它弄清楚。测试非常简单

    [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();
    }