刚开始使用ASP.NET MVC 4.试过这个教程,我能够很好地完成它:http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/intro-to-aspnet-mvc-4
我的问题是在我建立自己与webconfig中现有数据库的连接之后。我得到了它读取我的数据等,但DbContext如何知道要使用哪个表?什么指定表?例如,假设我有两张桌子" Cats"和#34; Dogs",每个都相同,但有不同的数据(虽然相同的字段等)。究竟是什么告诉我的控制器和模型使用" Cats"表?如果我只想将它切换到" Dogs&#34 ;?谢谢!
控制器:
public class MyCatsController : Controller
{
private MyCatDBContext db = new MyCatDBContext();
//
// GET: /MyCats/
public ActionResult Index()
{
return View(db.MyCats.ToList());
}
//
// GET: /MyCats/Details/5
public ActionResult Details(int id = 0)
{
MyCat mycat = db.MyCats.Find(id);
if (mycat == null)
{
return HttpNotFound();
}
return View(mycat);
}
//
// GET: /MyCats/Create
public ActionResult Create()
{
return View();
}
//
// POST: /MyCats/Create
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create(MyCat mycat)
{
if (ModelState.IsValid)
{
db.MyCats.Add(mycat);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(mycat);
}
//
// GET: /MyCats/Edit/5
public ActionResult Edit(int id = 0)
{
MyCat mycat = db.MyCats.Find(id);
if (mycat == null)
{
return HttpNotFound();
}
return View(mycat);
}
//
// POST: /MyCats/Edit/5
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Edit(MyCat mycat)
{
if (ModelState.IsValid)
{
db.Entry(mycat).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}
return View(mycat);
}
//
// GET: /MyCats/Delete/5
public ActionResult Delete(int id = 0)
{
MyCat mycat = db.MyCats.Find(id);
if (mycat == null)
{
return HttpNotFound();
}
return View(mycat);
}
//
// POST: /MyCats/Delete/5
[HttpPost, ActionName("Delete")]
[ValidateAntiForgeryToken]
public ActionResult DeleteConfirmed(int id)
{
MyCat mycat = db.MyCats.Find(id);
db.MyCats.Remove(mycat);
db.SaveChanges();
return RedirectToAction("Index");
}
protected override void Dispose(bool disposing)
{
db.Dispose();
base.Dispose(disposing);
}
}
型号:
public class MyCat
{
public int ID { get; set; }
[Required]
public string CatName { get; set; }
public bool IsAlive { get; set; }
[Required]
public string NickName { get; set; }
public string OtherName { get { return "Mr. " + NickName; } }
}
public class MyCatDBContext : DbContext
{
public MyCatDBContext()
: base("MyCatDBContext")
{
}
public DbSet<MyCat> MyCats { get; set; }
}
答案 0 :(得分:1)
public MyCatDBContext()
: base("MyCatDBContext")
{
}
MyCatDBContext是这里的连接字符串。
public DbSet<MyCat> MyCats { get; set; }
告诉数据库中有MyCat的MyCat(类)类型表。 您可能认为属性名称是MyCats,为什么表名是MyCat,这是EF使用的惯例,称为Singularized EntityType名称和Pluralized EntitySet名称。
public class MyCat
{
public int ID { get; set; }
[Required]
public string CatName { get; set; }
public bool IsAlive { get; set; }
[Required]
public string NickName { get; set; }
public string OtherName { get { return "Mr. " + NickName; } }
}
Class指示表中每列的列名和数据类型。
如果你写的话。
context.MyCats.Add();
它添加到MyCats表
让我知道它是否有帮助。