Soh*_*amC 4 c# entity-framework
我正在尝试创建一个控制台应用程序,我试图使用Entity Framework动态创建数据库和表来存储数据.但是,当我尝试将数据添加到我的DbSet
.我收到以下错误.
EntityFramework.dll中发生了未处理的"System.InvalidOperationException"类型异常
附加信息:创建模型时无法使用上下文.如果在OnModelCreating方法中使用上下文,或者同时由多个线程访问相同的上下文实例,则可能抛出此异常.请注意,DbContext和相关类的实例成员不保证是线程安全的.
我已经提到了其他类似错误的帖子,但没有一个解决方案有效.这是一个单线程应用程序.
错误发生在行
this.context.Environments.Add(entity)
Run Code Online (Sandbox Code Playgroud)
DataSource.cs
public class DataSource
{
private static DataSource instance;
public DataSource()
{
this.context = new CounterContext();
}
public static DataSource Instance
{
get
{
return instance ?? (instance = new DataSource());
}
}
private CounterContext context;
public void AddCockpitEnvironmentDetails(IList<Environment> environmentList)
{
foreach (var entity in environmentList)
{
this.context.Environments.Add(entity);
}
this.context.SaveChanges();
}
...
}
Run Code Online (Sandbox Code Playgroud)
我的背景:
public class CounterContext : DbContext
{
public CounterContext()
: base("name=CounterDbString")
{
Database.SetInitializer<CounterContext>(new CreateDatabaseIfNotExists<CounterContext>());
}
public DbSet<CounterData> CounterDetails { get; set; }
public DbSet<Environment> Environments { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
模型
public class Environment
{
[Key]
public Guid Id { get; set; }
public string EnvironmentName { get; set; }
public string EnvironmentNotes { get; set; }
public virtual ICollection<CounterDetail> CounterDetails { get; set; }
};
public class CounterData
{
[Key]
[Column(Order = 1)]
public DateTime counterTime { get; set; }
[Key]
[Column(Order = 2)]
public int counterName { get; set; }
[Key]
[Column(Order = 3)]
public Guid EnvId {get; set;}
public int count { get; set; }
[ForeignKey("EnvId")]
public virtual CockpitEnvironment Machine { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
App.config
:
<connectionStrings>
<add name="CounterDbString"
connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=Counters_Test;Integrated Security=True;Connect Timeout=30"
providerName="System.Data.SqlClient"/>
</connectionStrings>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
14783 次 |
最近记录: |