即使在安装Entity Framework 4.1之后,RelatedTo属性也无法识别

时间:2012-05-24 00:20:20

标签: visual-studio-2010 entity-framework code-first asp.net-mvc-4

我正在忙着学习ASP.Net MVC,所以我最近在Visual Studio 2010 Professional上安装了MVC 4。我正在尝试这个例子:

http://www.luisrocha.net/2010/11/creating-composite-keys-using-code.html

但Visual Studio找不到 RelatedTo 属性。我在this question上读到,这可能是由于未安装Entity Framework 4.1引起的。我检查了 System.Data.Entity.dll 的版本号,它提供了版本4.0.0.0,运行时版本v4.0.30319。所以在我看来,这是我的计算机上安装的EF版本4.0。我可能在这方面做错了......所以有人请你纠正我,如果我。

我从here下载了EF 4.1并安装了它,但 System.Data.Entity.dll 的版本号似乎没有改变, RelatedTo 属性仍然无效。任何人都知道安装出了什么问题以及如何解决它?

更新

我按照this site的指示使用nuget安装了Entity Framework,控制台说它安装了 EntityFramework 5.0.0-rc ,但 System.Data.Entity的版本.dll 似乎没有改变。

不,我没有使用System.Data.Entity 包含因为intellisense没有告诉我包含它。我确实使用System.ComponentModel.DataAnnotations.Schema 包含了 System.ComponentModel.DataAnnotations ,因为这些是 Key Column所必需的属性。 Intellisense要求我“为'relatedTo'生成类'并使用System.Data.Entity 添加不会改变它。

这是我的代码,对于那些要求它的人,虽然它正是我在问题中链接到的教程中的代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Data.Entity;

namespace Example
{
    public class PlaylistTrack
    {
        [Key, Column(Order = 1)]
        public int PlaylistId { get; set; }

        [Key, Column(Order = 2)]
        public int TrackId { get; set; }

        [RelatedTo(ForeignKey = "PlaylistId")]
        public Playlist Playlist { get; set; }

        [RelatedTo(ForeignKey = "TrackId")]
        public Track Track { get; set; }
    }
}

1 个答案:

答案 0 :(得分:4)

尝试使用Nuget安装新版本的EF。它将解决EF的所有依赖关系,它将确保您拥有最新版本。我不知道RelatedTo属性应该在这里做什么。请参阅数据注释部分中的here,相关的属性不在EF4.1版本中。但你可以做同样的事情。

      [ForeignKey("PlaylistId")] 
      public Playlist Playlist { get; set; }

      [ForeignKey("TrackId")] 
      public Track Track { get; set; }

修改 RelatedTo attribute is replaced by ForeignKey and InverseProperty attributes in EF 4.1 RC