C# 使用DbContext.Set<;T>;。Add()不会添加到数据库
我无法将存储库插入到数据库中 我的背景:C# 使用DbContext.Set<;T>;。Add()不会添加到数据库,c#,entity-framework,asynchronous,dbcontext,C#,Entity Framework,Asynchronous,Dbcontext,我无法将存储库插入到数据库中 我的背景: public class Context : DbContext { public Context() : base("MyDatabase") { } public DbSet<Appartment> Appartments { get; set; } public DbSet<Sensor> Sensors { get; set; } public DbSet<Meas
public class Context : DbContext
{
public Context() : base("MyDatabase")
{
}
public DbSet<Appartment> Appartments { get; set; }
public DbSet<Sensor> Sensors { get; set; }
public DbSet<Measurement> Measurements { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Measurement>().HasKey(m => new {m.AppartmentId, m.SensorId});
modelBuilder.Entity<Measurement>()
.HasRequired(m => m.Appartment);
modelBuilder.Entity<Measurement>()
.HasRequired(m => m.Sensor);
}
}
公共类上下文:DbContext
{
公共上下文():基(“MyDatabase”)
{
}
公共数据库集装置{get;set;}
公共数据库集传感器{get;set;}
公共数据库集度量{get;set;}
模型创建时受保护的覆盖无效(DbModelBuilder modelBuilder)
{
modelBuilder.Entity().HasKey(m=>new{m.AppartmentId,m.SensorId});
modelBuilder.Entity()
.需要(m=>m.公寓);
modelBuilder.Entity()
.has必需(m=>m.Sensor);
}
}
我的实体:
public class Appartment
{
public int AppartmentId { get; set; }
public int Floor { get; set; }
public int Number { get; set; }
public double Size { get; set; }
public ICollection<Measurement> Measurements { get; set; }
public Appartment()
{
}
public Appartment(int floor, int number, int size)
{
Floor = floor;
Number = number;
Size = size;
}
}
公共级公寓
{
公共int公寓ID{get;set;}
公共整数层{get;set;}
公共整数{get;set;}
公共双大小{get;set;}
公共ICollection度量值{get;set;}
公共公寓
{
}
公共公寓(内部楼层、内部编号、内部尺寸)
{
地板=地板;
数字=数字;
大小=大小;
}
}
我的存储库:
public class Repository<T> where T : class
{
private Context _context;
public Repository(Context context)
{
_context = context;
}
public async Task<int> Add(T t)
{
_context.Set<T>().Add(t);
return await _context.SaveChangesAsync();
}
公共类存储库,其中T:class
{
私人语境(private Context)(私人语境);;
公共存储库(上下文)
{
_上下文=上下文;
}
公共异步任务添加(T)
{
_context.Set().Add(t);
return wait_context.saveChangesSync();
}
我的测试:
class Program
{
static void Main(string[] args)
{
var context = new Context();
var appRepos = new Repository<Appartment>(context);
var test = new Appartment(1,1,1);
appRepos.Add(test);
}
类程序
{
静态void Main(字符串[]参数)
{
var context=新上下文();
var appRepos=新存储库(上下文);
var测试=新装置(1,1,1);
批准添加(测试);
}
使用此选项时,不会将Appartment对象插入到我的数据库中
我完全错过了什么吗
提前感谢。您需要等待appRepos.Add,因为它是一个异步方法。否则,您的程序将在异步方法执行之前终止
await appRepos.Add(test);
但是,我无法在Main()中执行此操作。EDIT:appRepos.Add(test).Wait()工作正常。