首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >实体框架TPH继承数据建模问题

实体框架TPH继承数据建模问题
EN

Stack Overflow用户
提问于 2013-01-10 07:34:39
回答 1查看 411关注 0票数 0

我是Entity Framework和C#/.Net的新手,正在尝试创建一个TPH继承模型,我不确定是否应该这样做,所以如果不是,请给我建议,

这是一个模型:

代码语言:javascript
复制
 public abstract class Vote
 {
    public int VoteID { get; set; }
    public int UserID { get; set; }
    public bool Value { get; set; }
    public DateTime DateCreated { get; set; }

    public User User { get; set; }
 }

 public class ProjectVote_ : Vote
 {
    public int ProjectID { get; set; }
    public virtual Project Project { get; set; }
 }
 public class CommentVote_ : Vote //There are three more like this, votes for different hings
 {
    public int CommentID { get; set; }
    public virtual Comment Comment { get; set; }
 }

现在项目模型(注释和模型类似)

代码语言:javascript
复制
public class Project
{
    public int ProjectID { get; set; }
    public string Title { get; set; }
    public virtual ICollection<Vote> Vote { get; set; }
}

发生的情况是,ICollection创建了一个数据库列Project_ProjectID作为投票表(我认为)中的外键,而不是使用我定义的ProjectID。我如何修复它,或者我应该以不同的方式对其进行建模。如果fluent API是修复它的方法,我不知道该怎么做。

最后,我希望能够使用一个表来存储5种不同类型的投票。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-10 10:46:04

如果有相关实体,则不需要具有属性来将FK存储在模型中。当实体框架检测到您的ProjectVote_模型中的项目时,它知道需要对ProjectVote中的Project表进行FK。User、UserId、Comment和CommentId也是如此。您不需要在模型中具有存储FK的属性。

您将获得名称为"Project_ProjectID“的FK列,因为实体框架检测到它需要为导航属性”项目“创建一个FK。它使用自己的命名约定来创建列,因此是"Project_ProjectID“。

如果希望为列提供自己的名称,请在DBContext类中重写OnModelCreating并添加这个流畅的映射。

代码语言:javascript
复制
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.Entity<Project>()
        .HasMany(p => p.Vote)
        .HasRequired(v => v.Project) //or .WithOptional(v => v.Project)
        .Map(m => m.MapKey("ProjectId"));  //or any other name you want.
}

例如,对于未来的this is a helpful reference for how to use the Fluent API.,这里有一些关于如何使用fluent自定义TPH的documentation

希望这能有所帮助!

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14248410

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档