使EntityFramework首先在其他属性之前设置一个属性

时间:2013-01-17 22:32:44

标签: entity-framework properties

当使用代码优先的EntityFramework时,我需要在其他属性之前设置一个属性 - 当从数据库创建对象时,如何指定它调用属性集的顺序?

E.g。

public class Person
{
    public string Name { get; set; }
    public string Something 
    { 
        get { return something; } 
        set
        {
             something = value + " for " + Name;
        }
    }

    private string something;
}

在上面的代码中,我需要在设置Something属性时设置Name属性。

这不是实际的例子 - 我知道还有其他方法可以实现这一点,但我不是在追求那些,而是我如何告诉EF在某事之前设置名字。

1 个答案:

答案 0 :(得分:0)

我想了解你问题的背景。我将做出以下假设:

  1. 传递给setter的值不是另一个计算属性
  2. 传递给setter的值旨在存储在数据库中
  3. 如果更新了名称,您会希望更新某些内容以反映新名称吗?
  4. 我认为您的错误是尝试将派生部分添加到您要存储的值中。计算另一个属性中的漂亮名称,或者在get:

    上计算

    UPDATE 有一个示例覆盖了Something属性的get,但删除了,因为我觉得这是不好的做法。

    public class Person
    {
    public string Name { get; set; }
    
    public string Something { get; set; }
    
    public string getFancySomething { 
        { return Something + " for " + Name; } 
    }
    }
    

    最后 - (这里是我可以使用一些帮助的地方,因为我没有碰到我需要做这样的事情)我的猜测是你不需要存储部分计算的属性{{1在你尝试的方式,但如果你需要,我认为其他细节可能会帮助别人为你提供更好的答案。

    更新2 正如我的评论中所描述的 - 不确定这会起作用,但感觉非常错误,但你可以尝试类似的东西:

    Something

    然后在setter中:

    modelBuilder.Entity<Person>().Ignore(x => x.Something);
    

    这又取决于你的需求,并且不能满足传递这个值的任何需要,我不确定这是一个好主意。