我看到一张混合了代码DbSet和DbContext在一起.我对实体框架不太满意.我认为它们是不同的东西.
有人可以给我一点解释吗?
public class testContext : DbContext
{
public testContext();
public string IPAddress { get; set; }
public DbSet<WSettings> Settings { get; set; }
public string UserName { get; set; }
public override int SaveChanges();
}
Run Code Online (Sandbox Code Playgroud)
Mil*_*dis 73
直观地说,DbContext对应于您的数据库(或数据库中的表和视图的集合),而DbSet对应于数据库中的表或视图.因此,您将获得两者的组合是完全合理的!
您将使用DbContext对象来访问您的表和视图(将由DbSet表示),您将使用DbSet来访问,创建,更新,删除和修改表数据.
如果您的数据库中有10个表,并且您的应用程序使用其中的5个表(我们称之为Table1 - 表5),则使用MyAppContext对象访问它是有意义的,其中MyAppContext类定义如下:
public class MyAppContext : DbContext
{
public MyAppContext () : ;
public DbSet<Table1> Table1 { get; set; }
public DbSet<Table2> Table2 { get; set; }
public DbSet<Table3> Table3 { get; set; }
public DbSet<Table4> Table4 { get; set; }
public DbSet<Table5> Table5 { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
请注意,例如,标识符Table1既用作类型的名称,也用作定义的上下文类型中的属性的名称.你在上面看到的是非常典型的.下面给出了对应于表模式的类的示例:
public class Table1
{
public int Id {get; set;}
public string AStringField {get; set;}
//etc.
}
Run Code Online (Sandbox Code Playgroud)
在这里查看更多信息:http://entityframeworktutorial.net/
Dan*_*ite 21
DbContext通常表示数据库连接和一组表.DbSet用于表示表格.
您的代码示例不符合预期的模式.首先,它是不完整的.此外,还有一些真正不属于的属性.
这种模式更典型:
class User
{
public string IPAddress { get; set; }
public ICollection<Settings> Settings { get; set; }
public string UserName { get; set; }
}
class MyContext : DbContext
{
public DbSet<User> Users { get; set; }
public DbSet<Settings> Settings { get; set; }
}
Run Code Online (Sandbox Code Playgroud)