我在.net核心应用程序中使用UseInMemoryDatabase。我需要自动递增功能。那可能吗?例如,我的班级是;
public class City
{
public int Id { get; set; }
public string Name { get; set; }
}
...
public DbSet<Statistic> Statistics { get; set; }
...
我要添加一个新对象,如下所示;
context.Cities.Add(new City{Name = "Amsterdam"});
我不想添加以下内容;
context.Cities.Add(new City{Id = 1,Name = "Amsterdam"});
因为我不想每次都检查现有的ID。
答案 0 :(得分:2)
是的,只要您不设置Id(因此它是与ID 0
一起插入的),就可以这样做,甚至是默认行为,这与DB支持的提供程序中的行为相同。
using System;
using Microsoft.EntityFrameworkCore;
namespace InMemoryIdSample
{
class Program
{
static void Main(string[] args)
{
var options = new DbContextOptionsBuilder<CityContext>().UseInMemoryDatabase("Cities").Options;
using (var context = new CityContext(options))
{
context.Add(new City { Name = "Vienna" });
context.Add(new City { Name = "Munich" });
context.SaveChanges();
}
using (var context = new CityContext(options))
{
foreach(var city in context.Cities)
{
Console.WriteLine($"City {city.Id}: {city.Name}");
}
}
}
}
public class City
{
public int Id { get; set; }
public string Name { get; set; }
}
public class CityContext : DbContext
{
public CityContext(DbContextOptions<CityContext> options) : base(options) { }
public DbSet<City> Cities { get; set; }
}
}
打印:
$ dotnet run
City 1: Vienna
City 2: Munich