Tag: entity framework

实体模型无法加载

每当我尝试打开我的实体模型时,我都会收到一条不太有用的错误消息,指出“操作无法完成”。 所以很遗憾,我没有更具体的信息。 但是,我有其他模型打开很好,我没有对模型进行任何重大更改,除了重命名实体。 这种行为是否有任何已知的解决方法? 我重新启动VS和我的PC,删除并再次添加模型,但没有任何帮助,所以它必须是.edmx中的东西,我猜。 但我没有手动修改它,一切都编译没有错误或警告。 : – /

entity framework代码首先初始化外键

这是代码的样子: public class Family { public int FamilyID { get; set; } public virtual ICollection FamilyMembers { get; set; } } public class Member { public int MemberID { get; set; } public virtual Family Family { get; set; } } public class Bicycle { public int BicycleID { get; set; } public virtual Member […]

更新属性时,entity framework会遍历所有记录(60,000!)

我试图为POCO对象设置单个属性的值,它看起来像Entity正在检索最初从中检索POCO对象的数据库表中的每个记录。 这是代码: public void DeleteFile(int fileid) { var context = GetContext(myTrans, false); FILE pocofile = (from f in context.FILES.All() where f.File_Id == fileId select f).FirstOrDefault(); // the following line causes a retrieve of 60,000 records pocofile.State_Id = Global.DeletedStateId // global constant // additional code that is eventually reached after about 10 minutes } 我们有一个FILES表,它有一个映射到STATE表的State_Id列。 因此,当我尝试在上面设置State_Id属性时,似乎将第一个文件设置为ok,但是通过它在FILE […]

更新时忽略某些列

你好我有这样的事情: public ActionResult Edit(int id) { var movie = (from m in _db.Movies where m.Id == id select m).First(); return View(movie); } [HttpPost] public ActionResult Edit(Movie movie) { try { var originalMovie = (from m in _db.Movies where m.Id == movie.Id select m).First(); _db.Movies.ApplyCurrentValues(movie); _db.SaveChanges(); return RedirectToAction(“Index”); } catch { return View(); } } 这个例子是从正确的方式采用数据模型优先方法使用entity […]

Web Api 2.2 – 类库项目中的代码优先迁移

我在myVS 2015解决方案中有两个项目。 项目A. Web Api 2.2项目 主项目,其中定义了DBContext类和连接字符串(在web.config文件中) 项目B. class级图书馆计划 项目A作为参考添加 模型和控制器定义 模型inheritance了一个Project A类 创建了一个DBContext类,它从项目AinheritanceDBContext。 public DbSet Planets {get; 组; } 我对上述项目结构背后的想法是: 在项目变大时降低复杂性 使其不那么复杂并增加可读性 在项目A中制作身份validation和授权逻辑 我必须在项目B中实现以下内容: 需要从项目A共享/访问连接字符串 需要先运行代码迁移。 需要知道在将应用程序部署到prod时如何运行代码首次迁移? 问题: 我已启用代码首次迁移并更新了数据库。 我运行没有任何问题,但它没有运行在项目A的web.config中配置的数据库。相反,它添加自己的本地数据库。 我是否应该在项目B中指定连接字符串。 如果是,作为一个类库,我该如何添加配置文件?

使用Code First From Database进行自定义名称映射

我正在考虑从LLBLGen ORM迁移到Entity Framework。 我想使用自定义命名约定来映射数据库列名称。 我的表名都是单词之间带下划线的大写字母。 即ACCOUNT_BALANCE 所有列名都是大写字母之间的下划线:即FULL_NAME 我的主键都以PK_或PFK_为前缀:即PK_ACCOUNT_BALANCE 我的外键都以FK_为前缀:即FK_ACCOUNT 我有一个庞大的数据库要设置,所以我想使用“数据库中的代码优先”方法和自动映射器将ACCOUNT_BALANCE转换为AccountBalance,将FULL_NAME转换为FullName,将PK_ACCOUNT_BALANCE转换为PkAccountBalance等。 我不介意弄脏我的手并进入EF源,但我目前正在努力找到关于最佳方法的任何指导。 任何帮助深表感谢。 解 minhcat_vo的解决方案让我开始了。 之后,我右键单击VS中的解决方案,单击“entity framework – >自定义反向工程师模板”,将自定义模板添加到项目中。 然后我创建[Program Files] \ VisualStudio \ Common7 \ IDE \ Extensions \ Microsoft \ Entity Framework Tools \ Templates \ Includes \ EF.Utility.CS.ttinclude(在同一个文件夹中)的副本 然后在Context.tt,Entity.tt和Mapping.tt文件中,我用新的替换了include的引用( <#@) 之后,我通过Context.tt,Mapping.tt和Entity.tt文件包含了对上下文,实体和属性的引用,包括code.ContextName(…),code.EntityName(…)和code.PropertyName(。 ..) 然后在新的EF.Utility.CS.ttinclude文件中我添加了那些方法和一个PascalCase方法: public string PascalCase(string name) { return name == null || […]

动态设置要在LINQ查询中加入的实体

我有一个查询: from joinedEntity in joinedEntities join relatedEntity in dbContext.X on …. 现在,我想以“X”可以动态传递的方式编写上述查询,这样我就不需要为每个不同的“X”编写单独的linq查询。 有帮助吗? 我应该使用表达树和reflection吗? 如果有,怎么样? 谢谢。 我有一些猜测它应该是这样的: var parameter = Expression.Parameter(typeof (CompanyContext), “dbContext”); var member = Expression.MakeMemberAccess(parameter, typeof(CompanyContext).GetMember(“X”)[0]); ….. 以下是我的加入示例: from joinedEntity in joinedEntities join relatedEntity in dbContext.Channels on joinedEntity.Id equals relatedEntity.CId select new JoinedEntities(joinedEntity) { Channel = relatedEntity.Name }; 这是它的方法语法: joinedEntities.Join(dbContext.Channels, m => m.Id, […]

如何将Linq与实体和WCF数据服务的数据连接起来?

我有4个相关的实体如下: LocalAgencyAgencyOrganizationCustomer 换句话说, LocalAgency有一个相关的Agency等。使用Entity Framework (包含导航属性来细读这些关系)建立数据模型,并设置WCF DataService以向客户提供该数据。 在使用DataService的客户端上,我试图根据客户名称返回本地代理商的查询,但是没有找到支持的方式来制定这个简单的查询。 我尝试的第一种方法是使用Expand ,如下所示: var items = (from i in Context.LocalAgencies.Expand(“Agency”).Expand(“Organization”).Expand(“Customer”) where (String.IsNullOrEmpty(CustomerName) || i.Agency.Organization.Customer.CustomerName.Contains(CustomerName)) select i).Skip(StartIndex).Take(PageSize).ToList(); 如果“join”只有1级深度,则此方法有效,但无法获取导航属性的导航属性。 然后我尝试了如下连接: var items = (from localAgency in Context.LocalAgencies join agency in Context.Agencies on localAgency.CustomerID equals agency.CustomerID join organization in Context.Organizations on localAgency.CustomerID equals organization.CustomerID join customer in Context.Customers on localAgency.CustomerID equals […]

允许用户访问页面 – MVC

我的项目获得了[Authorize]页面,用户必须登录才能访问这些页面。 使用与数据库中相同的用户标识和密码成功登录后,当前用户标识将存储在会话中。 但是我如何validation/允许用户使用[授权]访问页面? [HttpPost] [ValidateAntiForgeryToken] public ActionResult Login(User u) { if (ModelState.IsValid) //this is check validity { using (UserEntities db = new UserEntities()) { var v = db.Users.Where(a=>a.UserName.Equals(u.UserName) && a.Password.Equals(u.Password)).FirstOrDefault(); if (v != null) { Session[“LoggedUserID”] = u.Id.ToString(); Session[“UserFullname”] = u.Name.ToString(); return RedirectToAction(“AfterLogin”); } } } return View(u); } 任何帮助都非常感激。 谢谢。

ExecuteStoreCommand返回-1,EntityFramework,C#?

我想获得下一个自动递增的主键, 在这里我理解使用T-SQL来做到这一点。 所以我写了以下方法: public int GetLastNewsID() { const string command = @”SELECT IDENT_CURRENT (‘{0}’) AS Current_Identity;”; int id = EntityModel.ExecuteStoreCommand(command, “News”); return id; } 但它返回-1,而它现在必须是4。 PS:当我在SQL Management Studio中执行T-SQL下面时,它返回4 USE T; GO SELECT IDENT_CURRENT (‘NEWS’) AS Current_Identity; GO