【发布时间】:2023-04-02 02:40:01
【问题描述】:
我有 2 个模型类:
public class Nurse
{
public int Id { get; set; }
[Required]
public string FirstName { get; set; }
[Required]
public string Surname { get; set; }
[Required]
public string AddressLine1 { get; set; }
[Required]
public string AddressLine2 { get; set; }
public string AddressLine3 { get; set; }
public string AddressLine4 { get; set; }
[Required]
[EmailAddress]
public string EmailAddress { get; set; }
[Required]
[Phone]
public string ContactNumber { get; set; }
[Required]
public DateTime DateOfBirth { get; set; }
[Required]
public DateTime RegistrationDate { get; set; }
//Foreign Keys
public int PaymentId { get; set; }
[ForeignKey("PaymentId")]
public virtual Payment Payment { get; set; }
public int BranchId { get; set; }
[Required]
[ForeignKey("BranchId")]
public virtual Branch Branch { get; set; }
} // Cls
和
public class Payment
{
public int Id { get; set; }
//Type of String instead of to allow for starting zeros
[RegularExpression("^[0-9]+$")]
public string SortCode { get; set; }
[RegularExpression("^[0-9]+$")]
public string BankAccountNumber { get; set; }
[RegularExpression("^[0-9]+$")]
public string ChequeNumber { get; set; }
public DateTime DateReceived { get; set; }
public string Notes { get; set; }
//Foreign Keys
public int PaymentTypeId { get; set; }
[Required]
[ForeignKey("PaymentTypeId")]
public PaymentType PaymentType { get; set; }
public int NurseId { get; set; }
[Required]
[ForeignKey("NurseId")]
public Nurse Nurse { get; set; }
} // Cls
每当我尝试运行应用程序时,我都会收到以下错误:
抛出异常:EntityFramework.dll 中的“System.InvalidOperationException”
附加信息:类型“PNA_Model.Nurse”的属性“Payment”上的 ForeignKeyAttribute 无效。在依赖类型“PNA_Model.Payment”上找不到外键名称“PaymentId”。 Name 值应该是逗号分隔的外键属性名称列表。
每笔款项属于一名护士,但并非每位护士都有一笔款项。
如果我将 Payment 的“Id”属性更改为“PaymentId”,错误就会消失,根据错误消息,这是有道理的。
但是我认为 EF 足够聪明,可以自己解决这个问题,而且我与其他类及其“Id”属性也有类似的情况,但我没有收到它们的错误消息。
有什么想法吗?
谢谢
【问题讨论】:
-
您是否尝试将
ForeignKeyAttribute添加到PaymentId而不是Payment? -
您使用的是什么版本的 EF? EF6、EF Core?
-
@krillgar Version=6.0.0.0 根据 App.config 文件
-
@Mats391 刚试了一下,得到以下错误:EntityFramework.dll 中出现“System.Data.Entity.ModelConfiguration.ModelValidationException”类型的未处理异常附加信息:检测到一个或多个验证错误在模型生成期间:Nurse_Payment_Source::多重性在关系“Nurse_Payment”中的角色“Nurse_Payment_Source”中无效。因为从属角色属性不是关键属性,所以从属角色的多重性的上限必须是“*”。
-
@Shanie 您的 DataAnnotations 似乎都正确,您确定在模型构建中没有使用 fluent api 定义任何内容吗?
标签: c# entity-framework entity-framework-6