C# 如何使用实体框架更改外键关联?
使用ASP.NET实体框架,如何更改两个实体之间的外键关联 下面是一个示例场景:C# 如何使用实体框架更改外键关联?,c#,asp.net,entity-framework,C#,Asp.net,Entity Framework,使用ASP.NET实体框架,如何更改两个实体之间的外键关联 下面是一个示例场景: --------------- ---------------- | Customer | | Class | --------------- ---------------- | ID | | Desctription | | Name | | Name | | ClassID (FK)|-----| ID
--------------- ----------------
| Customer | | Class |
--------------- ----------------
| ID | | Desctription |
| Name | | Name |
| ClassID (FK)|-----| ID |
--------------- ----------------
客户从D类客户开始。客户花费越多,分类将更改为C、B或A。如何使用EF实现这一点
我已经在EF和我的解决方案之间建立了一个门面(因为有些操作需要EF之外的操作),我尝试这样做:customer.Context.Class.ID=facade.SelectClass(ClassID) 它返回一个类的业务对象,但customer.Context.Class.ID需要一个数据层对象,虽然我可以这样做,但这意味着我脱离了设置层设计 这有什么办法吗
如果问题有点混乱或模糊,很抱歉。首先,让我们回答这个问题,不需要所有额外的层次。在straight EF中,您可以执行以下操作:
var customer = Context.Customers.Where(c.Id == id).First();
customer.Class = Context.Classes.Where(c.Id == classId).First();
现在,如何将其映射到业务对象?我无法在没有看到的情况下调试代码,但您需要在facade中公开一些将业务类型映射到数据层类型的特性。我用表达式来解决这个问题,但有很多解决方案。这并没有完全解决我的问题,但在整个过程中起到了帮助作用。谢谢