2017-06-14 86 views
0

我試圖在Customer和MembershipType之間的兩個實體框架代碼優先模型之間創建1:1關係。它們的型號有:創建代碼實體框架中的第一個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; } 
    } 
} 

而當遷移運行它導致以下客戶表: Resulting Customers Table

這是爲什麼發生?當試圖使用Html幫助器創建下拉框時會引起問題,因爲它保存時想將數據放入MembershipTypeId列,但看起來實體實際上使用的是MembershipType_Id列。

+1

爲什麼你有公共byt e MembershipTypeId {get;組; }?使用編碼 - 首先,您只生成與對象MembershipType的關係。 – Fals

+0

我現在就試試吧!我使用字節MembershipTypeId,因爲我的教授告訴我tbh。對不起,我是美國高等學府。 – Kirkland

+2

不要浪費你的時間。不支持具有顯式FK屬性的「一對一」(如您的公共字節MembershipTypeId {get; set;})。 –

回答

0

你可以用下面的代碼試試:

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

相關問題