1

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

我删除了 NVARCHAR Country 字段并将其替换为 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 文件上手动运行“运行自定义工具”修复了这个问题,但它似乎没有奏效。

有没有人看到或解决它?

4

2 回答 2

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; }
}

如果我对此的假设是这样的,从性能的角度来看,这看起来很可怕。从那个类来看,如果我检索到美国的行,它还会加载每个配置文件,其中美国作为国家......还是我要疯了?设计师今天炸了我的脑...

于 2012-10-11T17:39:26.913 回答
0

只是为了记录,我在 Database First 上花费了这么多时间,我放弃了这一切,而是编写代码......

于 2012-10-11T18:48:27.860 回答