0
當添加一對多關係實體時,我得到一個InvalidCaseException。它在添加而不是SaveChanges上失敗。EF InvalidCastException一對多關係
無法轉換 類型的對象 'System.Collections.Generic.List`1 [UserAccount]' 鍵入 'UserAccount'。
據特林情況下,x的集合X的一個實例
(家長或一個實體)
[System.Xml.Serialization.XmlRootAttribute(Namespace="", IsNullable=false), Serializable()]
public class Merchant
{
/// <summary>
/// Standard ID
/// </summary>
[Key]
[DatabaseGenerated(System.ComponentModel.DataAnnotations.Schema.DatabaseGeneratedOption.Identity)]
public int ID { get; set; }
[DataType(DataType.Text), MaxLength(100)]
/// <summary>
/// UserFriendly Name
/// </summary>
public string MerchantName { get; set; }
/// Billing Information
/// </summary>
public virtual ICollection<BillingTransactions> BillingTransactions { get; set; }
/// <summary>
/// List of Accounts for this merchant (pulled from DBAccounts)
/// </summary>
public virtual ICollection<UserAccount> UserAccounts { get; set; }
}
(兒童或多次)
public class UserAccount
{
private string loginID;
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
/// <summary>
/// Standard ID
/// </summary>
public int ID { get; set; }
public int MerchantId { get; set; }
[ForeignKey("ID")]
public Merchant Merchant { get; set; }
//Obviously there are more properties here....
}
我創建如下新實體:
public void CreateNewMerchant(UserAccount useraccount)
{
Merchant merchant;
if (useraccount.Merchant == null) //New unknown merchant
{
merchant = new Model.Merchant.Merchant();
merchant.UserAccounts = new List<UserAccount>();
merchant.UserAccounts.Add(useraccount);
}
else
{
merchant = useraccount.Merchant;
}
ServiceBase<Merchant> sb = new Core.ServiceBase<Merchant>();
base.Add(merchant);
base.Save();
}
這是爲像表單界面的嚮導。第一步是創建一個用戶帳戶。下一步是填寫新的商家信息。嚮導步驟正在創建子對象useraccount和一個空父對象,然後在下一步創建父對象。
我的代碼正在創建一個空白/空的父項,並將子項/ useraccount添加到空商家並添加到數據庫中。
爲什麼我得到無效的轉換異常?
謝謝你的工作。我可能會嘗試將我自己的小技巧和提示放在一起。標準教程非常容易混淆外鍵名稱和正確的方法。 – DanScan