Thi*_*sen 1 c# asynchronous entity-framework dbcontext
我无法将我的存储库插入到我的数据库中.
我的背景:
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);
}
}
Run Code Online (Sandbox Code Playgroud)
我的实体:
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;
}
}
Run Code Online (Sandbox Code Playgroud)
我的存储库:
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();
}
Run Code Online (Sandbox Code Playgroud)
我的测试:
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);
}
Run Code Online (Sandbox Code Playgroud)
使用此功能,Appartment对象不会插入到我的数据库中.
我完全错过了什么吗?
提前致谢.
小智 5
您需要等待appRepos.Add,因为它是异步方法.否则,您的程序将在执行异步方法之前终止.
await appRepos.Add(test);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
771 次 |
| 最近记录: |