尝试了解 LINQ 和继承映射时,执行 connectionstring 行时,我在 DBContext.cs 中遇到异常:
Could not retrieve Table for inheritance subtype 'Movie, try Table of 'Media' instead
DBContext.cs
[Database]
public class DBContext : DataContext
{
public DBContext() : base(System.Configuration.ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString){ }
public Table<Member> members;
public Table<Media> media;
public Table<Movie> movies;
public Table<Game> games;
public Table<Track> tracks;
public Table<Album> albums;
// public Table<Loaned> loaned;
}
媒体.cs
[Table(Name="media")]
[InheritanceMapping(Code = 1, Type = typeof(Movie), IsDefault=true)]
[InheritanceMapping(Code = 2, Type = typeof(Game))]
[InheritanceMapping(Code = 3, Type = typeof(Album))]
[InheritanceMapping(Code = 4, Type = typeof(Track))]
public class Media
{
[Column(IsPrimaryKey=true)]
public string itemId;
[Column]
public string title { get; set; }
[Column]
public string price { get; set; }
[Column(IsDiscriminator=true)]
public int itemType { get; set; }
}
电影.cs
public class Movie : Media
{
[Column]
public int year { get; set; }
}
这是调用它的代码:
public static void GetAll()
{
using (DBContext db = new DBContext())
{
IEnumerable<Media> media = from m in db.media select m;
}
}
}
我有一种感觉,我错过了一些讨厌的映射属性。