我正在忙着学习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; }
}
}
答案 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