实体框架奇怪行为

时间:2012-10-11 16:59:50

标签: c# sql-server-2008 entity-framework associations

直到本周我才开始使用EF(第5版),现在我正在进行一些数据库更改,它正在做一些非常奇怪的事情。

我删除了一个NVARCHAR国家/地区字段,并将其替换为CountryId int字段,该字段是Country表的Id列的外键

ALTER TABLE [dbo].[UserProfile]  WITH CHECK ADD  CONSTRAINT [FK_UserProfile_Countries]   FOREIGN KEY([CountryId])
REFERENCES [dbo].[Countries] ([Id])

在VS2012中更新模型正在做一些非常无意义的事情。它报告了我删除的字段错误:

  

错误11010:未映射关联结束'国家'。

我有两个虚拟字段添加到模型中似乎不正确:

public partial class UserProfile
{
    public int UserId { get; set; }
    ...
    public int CountryId { get; set; }

    public virtual Country Country { get; set; }
    public virtual Country Country1 { get; set; }
}

我读过设计师有一个错误,在.tt文件上手动运行“运行自定义工具”修复了这个问题,但它似乎没有用。

有没有人看过这个或解决过它?

2 个答案:

答案 0 :(得分:0)

仅仅为了测试,我从头开始重新创建了我的模型。删除了所有文件。从头开始重新创建模型后,查看Country.cs文件吓坏了我的生命...如果我的假设是正确的。课程结束时看起来像这样:

public partial class Country
{
    public Country()
    {
        this.UserProfiles = new HashSet<UserProfile>();
    }

    public int Id { get; set; }
    public string CountryCode { get; set; }
    public string CountryName { get; set; }

    public virtual ICollection<UserProfile> UserProfiles { get; set; }
}

如果我对此有这样的假设,那么从性能的角度来看,这看起来很可怕。从看过那个课程看起来,如果我检索出来,那么美国的那一行它会加载每一个美国作为国家的个人资料......还是我疯了?设计师今天已经把我的大脑炸了......

答案 1 :(得分:0)

只是为了记录我在数据库优先处理这么多时间我已经放弃了所有这些而不是编写代码......