我完全分离了我的实体框架对象和我的 POCO 对象,我只是来回翻译它们......
IE:
// poco
public class Author
{
public Guid Id { get; set; }
public string UserName { get; set; }
}
然后我有一个具有相同属性的 EF 对象“作者”..
所以我有我的业务对象
var author = new Author { UserName="foo", Id="Guid thats in the db" };
我想保存这个对象,所以我执行以下操作:
var dbAuthor = new dbAuthor { Id=author.Id, UserName=author.UserName };
entities.Attach(dbAuthor);
entities.SaveChanges();
但这给了我以下错误:
具有空 EntityKey 值的对象不能附加到对象上下文。
编辑: 看起来我必须使用entities.AttachTo("Authors", dbAuthor); 在没有 EntityKey 的情况下附加,但是我有硬编码的魔法字符串,如果我完全更改我的实体集名称,它会中断并且我不会有任何编译时间检查...有没有一种方法可以附加来保持编译时间检查?
我希望我能够做到这一点,因为硬编码的字符串会扼杀编译时验证 =)