【问题标题】:In EF Code First is it possible to encapsulate properties that should be persisted to the data store?在 EF Code First 中,是否可以封装应该持久保存到数据存储的属性?
【发布时间】:2011-01-19 02:58:24
【问题描述】:

假设我有一个 POCO,我希望 EF Code First 将其保存到数据存储中:

public class Campaign
{
    public string Name { get; set; }
    public double GoalAmount { get; set; }
    private double AmountRaised { get; set; }
    public bool GoalMet
    {
        get
        {
            return AmountRaised >= GoalAmount;
        }
    }
}

现在,无论出于何种原因,我不希望 AmountRaised 属性可在对象外部访问,但我确实希望它持久保存到数据存储中。 EF Code First 可以做到这一点吗?

【问题讨论】:

    标签: c# entity-framework encapsulation code-first


    【解决方案1】:

    您可以将其设为internal,并确保包含 POCO / 域对象的项目与您的 DbContext 类位于同一程序集中。或者您可以在包含您的 POCO 的文件中声明“朋友”程序集:

    [assembly: InternalsVisibleTo("MyOther.Assembly")]

    【讨论】:

    • 不确定您的答案是否正确,但我不知道 InternalsVisibleTo -- 很高兴知道!
    • 谢谢。我完全忘记了 Internal 关键字。我已经将我的模型分离到它自己的项目中,所以这是完美的。
    猜你喜欢
    • 2014-07-30
    • 2015-01-19
    • 1970-01-01
    • 2011-05-19
    • 2013-06-02
    • 1970-01-01
    • 1970-01-01
    • 2011-06-18
    • 1970-01-01
    相关资源
    最近更新 更多