【发布时间】:2013-03-29 02:20:13
【问题描述】:
我正在寻找一种方法来创建我将用作参考对象的实体的只读(或不可变)版本。 例如
class Order
{
public int OrderId {get; private set;}
public virtual Product ProductOrdered{get;set;}
public int ProductId {get;set;}
public int Quantity{get;set;}
}
class Product
{
public int ProductId { get; set; }
public string Name { get; set; }
public string Category { get; set; }
}
在上面的示例中,产品应该用作参考数据。即,不应使用产品作为订单中的参考的代码修改产品。
现在,我意识到一种强制执行的方法是将所有设置器设为私有,并且没有人能够更改 Product...
class ProductReadOnly
{
public int ProductId { get; private set; }
public string Name { get; private set; }
public string Category { get; private set; }
}
但在我的应用程序的某个地方,我希望管理员能够创建/修改产品。所以,我可以使用 Product 类(带有公共设置器)
现在的问题是(假设我能够使用 Table 属性将 Product & ProductReadOnly 映射到产品表)
- 我能否将 ProductReadOnly 用作 Order 类中的导航属性?
- 我可以在同一数据上下文中加载 Product 和 ProductReadOnly(同一产品)吗?
- 有更简单的方法吗(分离的对象?)
- 这种方法有什么问题吗?
【问题讨论】:
-
尝试 google 或在 Stackoverflow 上搜索你会发现很多类似的问题和答案。
标签: c# .net entity-framework ef-code-first readonly