c# – 为什么在我的实体模型类中添加无参数构造函数在这里工作?有什么影响?

c# – 为什么在我的实体模型类中添加无参数构造函数在这里工作?有什么影响?,第1张

概述所以我有这个办公室实体类: [Table("office_entity")]public class EFOffice : EFBusinessEntity{ [Column("address")] [StringLength(250)] public string Address { get; set; } [Column("business_name") 所以我有这个办公室实体类:
[table("office_entity")]public class EFOffice : EFBusinessEntity{    [Column("address")]    [StringLength(250)]    public string Address { get; set; }    [Column("business_name")]    [StringLength(150)]    public string Businessname { get; set; }    public virtual ICollection<EFEmployee> Employees { get; set; }    public EFOffice(GuID ID,GuID tenantID,string address,string businessname)    {        this.ID = ID;        this.TenantID = tenantID;        this.Address = address;        this.Businessname = businessname;    }}

我正在实现一个通用存储库,我刚刚添加了这个方法来检查存储库中是否已存在实体:

public bool Exists<TEntity>(GuID key) where TEntity : class,IBusinessEntity{    return (_context.Set<TEntity>().Find(key) != null);}

然后我写了以下测试代码:

public voID TestExists1(){    InitializeDatabase();    EFOffice testOffice = InitializeOffice1();    DeBUG.Assert(EFRepo.Exists<EFOffice>(testOffice.ID));}

InitializeOffice1()的方法如下:

private EFOffice InitializeOffice1(){    EFOffice newOffice = new EFOffice(SparkTest.TestGuID1,SparkTest.TestGuID2,"Generic Address","HQ");    return newOffice;}

该测试应该通过,因为我已经插入了InitializeOffice1()之前返回的办公室.但是,我收到以下错误:

System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. —> system.invalIDOperationException: The class ‘Models.Employees.EF.EFOffice’ has no parameterless constructor.

那么我将其添加到顶部显示的EFOffice类中:

private EFOffice(){}

由于某种原因,测试现在通过.谁能解释一下发生了什么?并且无参数构造函数会产生不良副作用吗?重要的是,我插入的每个办公室都有一个ID,一个tenantID,一个地址和一个businessname,如顶部的构造函数中所列.

解决方法 链接到EntityFramework的所有实体都必须具有默认构造函数.

当实体框架从数据库查询映射到您的实体时,使用默认构造函数来实例化实体的新实例,以使用从数据库中检索的数据填充它.

如果您没有默认构造函数,Entity Framework不知道如何创建它的实例并抛出异常

The class ‘Models.Employees.EF.EFOffice’ has no parameterless constructor.

总结

以上是内存溢出为你收集整理的c# – 为什么在我的实体模型类中添加无参数构造函数在这里工作?有什么影响?全部内容,希望文章能够帮你解决c# – 为什么在我的实体模型类中添加无参数构造函数在这里工作?有什么影响?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1251745.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存