首先,我不确定它是否被称为mappin引用。但是,我有两个包含重要信息的表,其中有一个表。它如下:
CREATE TABLE Customer (
ID INT NOT NULL IDENTITY(1,1), -- PK
Number VARHCAR(255) NOT NULL,
) ....
CREATE TABLE Category (
ID INT NOT NULL IDENTITY(1,1), -- PK
Type INT NOT NULL, -- Defines the different category types
Number VARCHAR(50) NOT NULL,
Name VARCHAR(255) NOT NULL
) ....
CREATE TABLE CustomerCategories (
FK_Customer INT NOT NULL, -- References customer
FK_Category INT NOT NULL -- References category
) .... unique (FK_Customer, FK_Category)
在此模型中,客户可以有多个类别(只要category.Type不同)。
IT可能如下所示:
客户:
ID |编号
3 | 10000
分类
ID |类型|编号|名称
52 | 1 | PRIO_H |高
53 | 2 | REG |南部地区
CustomerCategories:
FK_Customer | FK_Category
3 | 52
3 | 53
在我的c#应用程序中,我将所有类别放在网格中,用户可以根据下拉列表更改不同的类别类型。
我使用EF4对象上下文。
在我的应用程序中,我的客户模型就像这样
interface ICustomer
{
int ID {get;}
string Number {get;}
Category Priority {get;set;}
Category Region {get;set;}
}
我的实施
partial class Customer : ICustomer
{
ID... // Not important right now
Number... // Not important right now
public Category Priority
{
get { return this.CustomerCategory.Where(c => c.Type == 1).Select(c2 => c2.Category).FirstOrDefault<Category>(); } // The getter works
set {}
}
}
我在设置值方面遇到了问题,我试过了
set {this.CustomerCategory.Where(c => c.Type == 1).Select(c2 => c2.Category) == value;}
这个说:不能将Model.Category类型转换为IEnumerable
所以我试图通过
显式选择值set {this.CustomerCategory.Where(c => c.Type == 1).Select(c2 => c2.Category).FirstOrDefault<Category>() == value;}
现在它说:作业的左侧必须是变量,属性或索引器。
是否有人知道如何使用EF4和对象上下文更新此类引用?
谢谢!
答案 0 :(得分:0)
您试图为IQueryable的结果分配值。 这应该有效:
set
{
var cc = context.CustomerCategory.Where(c => c.Type == 1).FirstOrDefault();
if (cc!=null)
{
cc.Category = value;
//or cc.CategoryId = value.Id; if you have foreign keys exposed
//context.SaveChanges(); if you need changes saved in the database immediately.
}
}