刚接触 ef,一堆问题,总结如下
1.表名 和类名 不一致
参考了一下网址http://hi.baidu.com/handboy/item/559a773ae2bdcbc6382ffaec
在dbcontext类中,添加下面方法即可
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
//表名和类名不同时的处理
modelBuilder.Entity<User>() .ToTable("TBUser", "dbo");
}
2.多个dbcontext公用一个数据库连接
修改构造函数如下即可 MyDBContext是公用的数据库链接配置
public UserDBContext()
: base("name=MyDBContext")//采用哪个数据库连接
{
}
3.针对数据库已存在的表,需要设置Database.SetInitializer<UserDBContext>(null); 关闭 同步检查 机制 否则会报错。
其他
1、当数据库 配置文件 没数据库时,自动创建数据库和表,当表不存在时,报错,不自动创建表,目前不知道库存在时,如何自动创建表
2、创建实体时,可以传递对象,也可以传递相应的属性,大小写没关系,和顺序也没关系,不知道是什么原理
界面上不是该对象的属性,额外的input控件的值 ,通过 id号,好像不行,不知道怎么弄
[HttpPost]
public ActionResult Create(string password, string DispName, string loginname, string RegistTime)
完整代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.Entity;
using System.ComponentModel.DataAnnotations.Schema;
namespace MvcApplication4.Models
{
public class User
{
public int Id { get; set; }
public string LoginName { get; set; }
public string PassWord { get; set; }
public string DispName { get; set; }
public DateTime RegistTime { get; set; }
}
public class UserDBContext : DbContext
{
public UserDBContext()
: base("name=MyDBContext")//采用哪个数据库连接
{
//针对数据库已存在的表,关闭DatabaseInitializer的检查数据库的功能 同步检查特性
Database.SetInitializer<UserDBContext>(null);
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
//表名和类名不同时的处理
modelBuilder.Entity<User>()
.ToTable("TBUser", "dbo");
}
public DbSet<User> Users { get; set; }
}
}