向数据库中添加对象时,EF 是否会自动分配 ID?
例如:当我测试它时,我不知道它是如何工作的,并运行了几次向数据库添加几个对象的代码,但是在检查时,我发现所有的ID都完美地增加了一个,即使我手动设置值
class Program
{
static void Main(string[] args)
{
using (var db = new AulaContext())
{
var a = new Aula();
var b = new Aula();
var c = new Aula();
var d = new Aula();
var e = new Aula();
var f = new Aula();
var g = new Aula();
var h = new Aula();
a.Id = 0;
a.Capacidad = 30;
a.ConexionARed = true;
a.Proyeccion = true;
a.Aul = "1.1";
b.Id = 0;
b.Capacidad = 30;
b.ConexionARed = true;
b.Proyeccion = true;
b.Aul = "1.2";
c.Id = 0;
c.Capacidad = 30;
c.ConexionARed = true;
c.Proyeccion = true;
c.Aul = "1.3";
d.Id = 0;
d.Capacidad = 30;
d.ConexionARed = true;
d.Proyeccion = true;
d.Aul = "2.1";
e.Id = 0;
e.Capacidad = 30;
e.ConexionARed = true;
e.Proyeccion = true;
e.Aul = "2.2";
f.Id = 0;
f.Capacidad = 30;
f.ConexionARed = true;
f.Proyeccion = true;
f.Aul = "2.3";
g.Id = 0;
g.Capacidad = 30;
g.ConexionARed = true;
g.Proyeccion = true;
g.Aul = "1.4";
h.Id = 0;
h.Capacidad = 30;
h.ConexionARed = true;
h.Proyeccion = true;
h.Aul = "1.5";
db.Aulas.Add(a);
db.Aulas.Add(b);
db.Aulas.Add(c);
db.Aulas.Add(d);
db.Aulas.Add(e);
db.Aulas.Add(f);
db.Aulas.Add(g);
db.Aulas.Add(h);
db.SaveChanges();
var query = from aul in db.Aulas
orderby aul.Id
select aul;
foreach (var item in query)
{
Console.WriteLine(item.ToString());
}
Console.ReadKey();
}
}
}
public class Aula
{
private int id;
public int Id { get {return id;} set { id = value; } }
private int capacidad;
public int Capacidad { get { return capacidad; } set { capacidad = value; } }
private bool conexionARed;
public bool ConexionARed { get { return conexionARed; } set { conexionARed = value; } }
private bool proyeccion;
public bool Proyeccion { get { return proyeccion; } set { proyeccion = value; } }
private string aul;
public string Aul { get { return aul; } set { aul = value; } }
public override string ToString()
{
return "ID: " + this.id + "\n" +
"Capacidad: " + this.capacidad + "\n" +
"Conexion a red: " + this.conexionARed + "\n" +
"Proyector: " + this.proyeccion + "\n" +
"Aula: " + this.aul;
}
}
public class AulaContext : DbContext
{
public DbSet<Aula> Aulas { get; set; }
}
}
EF 会自动选择 Id 字段作为主键,它可以在没有 Id 字段的情况下选择 AulaID 作为主键。这就是约定优于配置。
但是,您可以通过在 POCO 类或 EF 配置中将某些其他字段标记为表的主键来更改该行为。在没有显式命令的情况下,EF 将使用约定来确定主键。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句