哪一个更好作为POCO模型属性:ForeignKey / ID或Object reference?

时间:2011-11-22 23:54:41

标签: c# entity-framework .net-4.0 poco

您好,我正在开始在我正在进行的项目中使用EF 4.1和POCO。我使用的模型看起来像这样:

 public class Contact1
    {
        // Primary key
        public int ID { get; set; }

        public string FirstName { get; set; }
        public string LastName { get; set; }
        public virtual Address DelAddress { get; set; }
        public virtual Address POAddress { get; set; }
        public string EmailAddress { get; set; }
        public bool InActive { get; set; }
        public string Comment { get; set; }
        public string Phone1 { get; set; }
        public string Phone2 { get; set; }
    }

但是我确实看到了很多使用ForeignID作为地址的参考的例子,例如Address,我正在使用模型中的地址对象的直接引用。我认为使用引用更好,因为我正在处理此级别的对象,但不是记录或数据库级别,最终将由ID引用。但是,你还会用什么代码进行Code First模型?

1 个答案:

答案 0 :(得分:0)

假设所有其他事物都相同,对象引用更好,因为“软”基于ID的引用的“噪音”会污染您的模型。

那就是说,所有其他事情都不相同,因为拉迪斯拉夫在Foreign key vs. Independent associations in EF 4写道。例如,独立关联要求您在内存中拥有关系的两端。保存更新时,这可能会有点问题,因为您必须加载关系的目标,否则它不会在ObjectStateManager中。保存具有许多引用“参考数据”类型实体的实体以及在N层架构中工作时,这是一种特别的痛苦。

两者都工作大部分都是正确的但是他们的实现并不完整,没有奇偶校验。因此,如果没有对您的使用模式,架构和性能要求进行更严格的分析, better 就无法完全确定。