我有一个用C#构建的桌面应用程序。但是时间还在继续,现在是基于桌面应用程序网络(新应用程序)的时候了。因此,为了将桌面应用程序移植到基于Web的我使用ASP.NET MVC和Entity Framework。该应用程序使用现有的数据库。但是数据库非常庞大。像500张桌子一样。我想知道我是否可以在EF中使用LinqToSQL,以便您可以使用这些对象,例如:
public ActionResult Create(Climb climb)
{
try
{
if (ModelState.IsValid)
{
db.Climbs.Add(climb);
db.SaveChanges();
return RedirectToAction("Index");
}
}
catch (RetryLimitExceededException /* dex */)
{
ModelState.AddModelError("", "Unable to save changes. Try again, and if the problem persists, see your system administrator.");
}
SetCountryDifficultViewBag(climb.CountryId, climb.DifficultId);
return View(climb);
}
但这当然是来自其他项目的现有模型。但当然在新的应用程序中我没有这些模型。
所以我尝试使用向导在项目中导入数据库:实体数据模型向导。见图片:
但这不是一个好主意。因为我收到了错误:使用了太多内存。还有db的大小,比如500 mb。
所以我现在使用经典的slq,像这样:
public async Task<ActionResult> Index (int? SelectedVestiging)
{
var query = "SELECT Code, Name from [Verploegen TEST$Location]";
Vestiging vestiging = await db.Vestigingen.SqlQuery(query, SelectedVestiging).FirstOrDefaultAsync();
if (vestiging == null)
{
return HttpNotFound();
}
var allITems = db.Vestigingen
.Select(s => new SelectListItem { Value = s.Code, Text = s.Code }).ToList();
ViewBag.WestVigs = allITems;
return View(vestiging);
}
此查询有效
上面的示例是显示位置。位置表具有以下属性:Code and Name
。
我为Location制作的模型是这样的:
public class Vestiging
{
//public int VestigingID { get; set; }
[Key]
public string Code { get; set; }
public string Name { get; set; }
}
但当然我也使用更多链接表的查询。所以我有两个问题:
1.我可以使用LINQ吗?或者我必须坚持使用经典的SQL 我用来查询位置的模型好吗?或者使用ViewModels更好吗?