簡體   English   中英

在實體框架中創建Code First 1:1關系會導致兩個外鍵字段

[英]Creating Code First 1:1 relationship in entity framework results in two foreign key fields

我正在嘗試在Customer和MembershipType之間的兩個Entity Framework代碼優先模型之間創建1:1關系。 他們的模型是:

Customer.cs

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Web;

namespace Vidly.Models
{
    public class Customer
    {
        public int Id { get; set; }

        [Required]
        [StringLength(255)]
        public string Name { get; set; }

        public bool IsSubscribedToNewsletter { get; set; }

        public MembershipType MembershipType { get; set; }

        [Display(Name = "Membership Type")]
        public byte MembershipTypeId { get; set; }

        [Display(Name = "Date of Birth")]
        public DateTime? Birthdate { get; set; }
    }
}

MembershipType.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace Vidly.Models
{
    public class MembershipType
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public short SignupFee { get; set; }
        public byte DurationInMonths { get; set; }
        public byte DiscountRate { get; set; }
    }
}

運行遷移后,將產生以下“客戶”表: 結果客戶表

為什么會這樣? 嘗試使用HTML幫手創建下拉框時,這會引起問題,因為在保存時,它想將數據放入MembershipTypeId列,但看來實體實際上正在使用MembershipType_Id列。

您可以嘗試以下代碼:

namespace Vidly.Models
{
    public class Customer
    {
        public int Id { get; set; }

        [Required]
        [StringLength(255)]
        public string Name { get; set; }

        public bool IsSubscribedToNewsletter { get; set; }



        [Display(Name = "Membership Type")]
        public byte MembershipTypeId { get; set; }

        [Display(Name = "Date of Birth")]
        public DateTime? Birthdate { get; set; }


     public virtual  MembershipType MemshipType { get; set; }
    }


    public class MembershipType
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public short SignupFee { get; set; }
        public byte DurationInMonths { get; set; }
        public byte DiscountRate { get; set; }

       public virtual  Customer  customer{ get; set; }
    }

}

有關更多信息以及執行此操作的其他方式,請參考此有用的鏈接: http : //www.entityframeworktutorial.net/code-first/configure-one-to-one-relationship-in-code-first.aspx

希望對您有所幫助

謝謝

KARTHIK

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM