0

有没有办法在 Code First 中映射列,以便在选择时填充它,但在插入或更新时不使用?

如果我应用 [NotMapped] 注释,则不会填充属性/列,但是如果我不添加此注释,则在插入时,它会抱怨该列不存在。

我问的原因是我有一个查询,它执行连接并返回列的值,但在插入时,不需要此列。

有任何想法吗?

干杯

编辑:

只是一个更新,以更详细地解释我在做什么。

以前,我有两张桌子,

Carer
    CarerID
    UserID
    IsPrimary

User
    UserID

但是后来,要求一个 Carer 可以属于多个 User,所以我必须创建一个链接表,如下所示。

UserCarer
    UserCarerID
    UserID
    CarerID
    IsPrimary

我不想做的是,我暂时解决这个问题的方法是在我的实体中创建一个方法,然后初始化另一个上下文以获取值。

相反,我希望当我选择数据时,我会执行左连接以IsPrimary从 UserCarer 表中获取值,从而允许我保留对Carer.IsPrimary

IEselect * from Carer.*, UserCarer.IsPrimary from Carer left join UserCarer on Carer.CarerID = UserCarer.CarerID where UserCarer.UserID = @p0

高温高压

4

1 回答 1

0

仅当您将列标记为计算列或标识列(插入时自动生成)时才有可能,但它有另一个后果 - EF 将在更新或插入后尝试选择该列,因此如果它在您的表中不存在,您仍然会得到一个错误。

看起来您正在尝试填充不是实体的类,并且此类类不能用于持久性!如果您在查询中有自定义联接,则意味着您正在对数据进行投影/查看,结果很可能不是实体 = 不应用于保存更改。

于 2012-05-03T12:01:30.507 回答