我从我的数据库生成了一个模型(使用EF),我将代码生成策略设置为None,然后我创建了具有与模型中相同属性的(POCO)类,现在我的业务类与EF分离。(我的模型只有两个类:问题和答案。一个问题可以有更多的答案)。
这段代码很好:
Question q=db.Questions.First();
Answer a=q.Answers.First();
a.Title+=" modified";
q.Answers.Add(new Answer(){Text="bla bla bla"});
db.SaveChanges();
我有一点不便:
Question q=db.Questions.First();
Answer a=q.Answers.First();
q.Answers.Remove(a);
db.SaveChanges();
使用此代码,我有此错误:
无法更改关系,因为一个或多个外键属性不可为空。当对关系进行更改时,相关的外键属性将设置为空值。如果外键不支持空值,则必须定义新关系,必须为外键属性分配另一个非空值,或者必须删除不相关的对象。
但这可以通过以下方式完成:
Question q=db.Questions.First();
Answer a=q.Answers.First();
db.Answers.DeleteObject(a);
那么,当我的 EF 足够好时,为什么我需要 Castle Windsor(动态代理)?EF 和 Castle Windsor 一样好用,它在运行时继承了我的 POCO 类。
1) 如果我有 EF,DynamicProxy(Castle Windsor) 和 AOP(PostSharp) 有什么作用?
2)当我可以在编译时继承我的 POCO 类时,我需要什么动态代理(带反射)?(这是可选的,可以为这个主题创建另一个问题)
对不起,我的英语不好。