【发布时间】:2018-03-24 22:32:05
【问题描述】:
我有一个 EF 问题要问你:我有这两门课
public class Post
{
public long Id {get;set}
public string Content {get;set;}
public virtual ICollection<Comment> Comments {get;set;}
}
public class Comment
{
public long Id {get;set;}
public string Content {get;set;}
}
我首先用这些列创建了一个数据库,EF 用Post 类的Id 列创建了外键,但后来我添加了UniqKey 列作为我的新主键:
public class Post
{
public long Id {get;set}
public string Content {get;set;}
public string UniqKey {get;set;} //New Field will be my new primary key
public virtual ICollection<Comment> Comments {get;set;}
}
我想将我的外键更改为使用UniqKey 而不是Id。
我想在不删除和丢失任何数据的情况下更新数据库。
任何帮助表示赞赏
谢谢
【问题讨论】:
-
我假设
UniqKey实际上不会成为新的 primary 键?如果您希望Post引用UniqKey:在 EF6 中无法完成。 EF-core 允许备用键。 -
旧数据无法自动迁移,因为旧 FK 的类型为 long,您必须在添加新 PK 值后手动迁移数据(并在获取数据)。这不能在任何现有的初始化策略中完成,您必须配置一个策略为 null 的更新上下文。如果新属性实际上不应该是 FK,则您必须在每个查询中手动进行连接,因为 FK 引用 PK 列。
标签: c# asp.net entity-framework entity-framework-6