gpt4 book ai didi

c# - Entity Framework 异常已被调用的目标抛出

转载 作者:行者123 更新时间:2023-11-30 20:35:39 24 4
gpt4 key购买 nike

我正在尝试创建一个非常简单的实体 Framework Code First 项目,但无法解决“调用目标已抛出异常”的问题。当我尝试从我的数据库中检索数据时。

我有一个独特的类:

public class TestStylo
{
[Key]
public int TestStyloID { get; set; }
StyloType styloType { get; set; }
public string name;

public TestStylo(StyloType styloType, string name)
{
this.styloType = styloType;
this.name = name;
}
public StyloType getTypeStylo{
get { return styloType; }
}


}
public enum StyloType
{
pen,
wood,
gold
}

我的模型是:

public class Model1 : DbContext
{
public Model1()
: base("name=Model1")
{
}

public DbSet<TestStylo> MyStylos { get; set; }
}

我的 App.Config 是:

<configuration>
<configSections>
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</configSections>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
</providers>
</entityFramework>
<connectionStrings>
<add name="Model1" connectionString="data source=(LocalDb)\v11.0;initial catalog=TestCodeFirst.Model1;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />
</connectionStrings>
</configuration>

我的 connectionString 正在工作,我可以手动打开并查看我的数据库及其内容。当我尝试向我的数据库添加内容时,我使用:

using (Model1 db = new Model1())
{
TestStylo stylo = new TestStylo(StyloType.pen,"numberOne");
db.MyStylos.Add(stylo);
db.SaveChanges();
}

它在大多数情况下都有效(它只插入 ID .. 但我稍后会看到)

但是当我尝试检索时:

private void button2_Click(object sender, EventArgs e)
{
using (Model1 db = new Model1())
{
var stylos = from order in db.MyStylos
select order;

...
}
}

我收到一个 “Exception has been throwed by the target of an invocation.” 和一个内部异常 {“The class 'TestCodeFirst.TestStylo' has no parameterless constructor. ".

为什么会出现这样的错误?

最佳答案

实际错误出现在内部异常中:

The class 'TestCodeFirst.TestStylo' has no parameterless constructor.

所有实体都应该有一个无参数的构造函数,以便 Entity Framework 使用。

您可以简单地将此构造函数添加到您的实体中:

public class TestStylo
{
[Key]
public int TestStyloID { get; set; }
StyloType styloType { get; set; }
public string name;

public TestStylo(StyloType styloType, string name)
{
this.styloType = styloType;
this.name = name;
}
public StyloType getTypeStylo{
get { return styloType; }
}

// Add this:
public TestStylo()
{

}
}

如果您不想公开公共(public)构造函数,此构造函数实际上可以是internalprivate

关于c# - Entity Framework 异常已被调用的目标抛出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37701365/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com