Linq to SQL with externe数据库

时间:2016-08-31 09:04:11

标签: c# asp.net asp.net-mvc entity-framework linq

我有一个用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);

        }

但这当然是来自其他项目的现有模型。但当然在新的应用程序中我没有这些模型。

所以我尝试使用向导在项目中导入数据库:实体数据模型向导。见图片:enter image description here

但这不是一个好主意。因为我收到了错误:使用了太多内存。还有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更好吗?

0 个答案:

没有答案