拥有2对一关系EF

时间:2017-03-23 23:06:06

标签: c# asp.net-mvc entity-framework

我一直在对流畅的API进行一些研究才能做到这一点,但我不确定这是否可行,据我所知,OnModelCreate将重新创建一个数据库,但我实际上是什么需要是一种将我的表与我的实体相关联的方法,我有一个带有这2个表的数据库

dbo.Fleets 
OwnerId   (PK,uniqueidentifier,not null) 
ownerName (nvarchar(255),not null)


dbo.UserAccount
UserID        (PK,uniqueidentifier,not null)
UserName      (nchar(20), null)
SelectedFleet (FK,uniqueidentifier,null)
PrimaryFleet  (FK,UniqueIdentifier,null)

外键适用于Fleets.OwnerId,两者都是,所以在我的应用程序中,我希望能够获得我的主要机队和SelectedFleet EF的机队。

所以,如果我运行var v = dc.UserAccounts.Where(a => a.UserName == model.UserName).Include(d => d.Fleet).SingleOrDefault();,我将获得完整的结果

1 个答案:

答案 0 :(得分:-1)

我个人更喜欢使用DataAnnotations。

    [Table("UserAccounts")]
    public class UserAccounts
    {
        [Key]
        [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        public int Id { get; set; }
        public string UserName { get; set; }

        public virtual ICollection<Fleets> Fleets { get; set; }
    }

    [Table("Fleets")]
    public class Fleets
    {
        [Key]
        [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        public int Id { get; set; }
        public string Name { get; set; }

        public virtual UserAccounts UserAccount { get; set; }
    }     

然后,要访问用户队列,您将使用

var v = dc.UserAccounts.Where(a => a.UserName == model.UserName).Include(d => d.Fleet).SingleOrDefault();