使用ASP.NET Entity Framework,如何更改两个实体之间的外键关联?
以下是一个示例场景:
--------------- ----------------
| Customer | | Class |
--------------- ----------------
| ID | | Desctription |
| Name | | Name |
| ClassID (FK)|-----| ID |
--------------- ----------------
客户以D类客户身份开始。客户花费的越多,分类将变为C,B或A.如何使用EF进行此操作?
我在EF和我的解决方案之间设置了一个外观(因为有些操作需要EF以外的操作),我尝试这样做:
customer.Context.Class.ID = facade.SelectClass(ClassID)
返回Class的Business Object,但customer.Context.Class.ID需要一个Data Layer对象,虽然我可以这样做,但这意味着我会脱离设置层设计。
有什么方法吗?
很抱歉,如果问题有点混乱或模糊。
答案 0 :(得分:1)
首先,让我们在没有你所有额外图层的情况下回答这个问题。在直接EF中,你可以这样做:
var customer = Context.Customers.Where(c.Id == id).First();
customer.Class = Context.Classes.Where(c.Id == classId).First();
现在,您如何将其映射到业务对象?我无法在没有看到代码的情况下调试代码,但是您需要在外观中公开一些将业务类型映射到数据层类型的功能。我用表达式做这个,但是有很多解决方案。