Tag: entity framework

entity framework中的联盟

我有两张桌子:车辆和工人。 Vehicle(Id, Number) Workers(Id, Name, ContractorVehicleNumber) 我想写lambda查询来返回所有车辆和承包商车辆。 像sql中的东西: SELECT Id, Number FROM Vehicle UNION SELECT NULL, ContractorVehicleNumber FROM Workers 这就是我所做的: public IQueryable Get(bool includeContractorVehicles) { IQueryable query = GetQuery(); if (includeContractorVehicles == true) { WorkerRepository rep = new WorkerRepository(); IQueryable contractorsVehicles = rep.GetWirkers(). Select(x => new Vehicle() { VehicleNumber = x.ContractorVehicleNumber }); query = query.Union(contractorsVehicles); […]

从对象,entity framework自动创建数据库表

我正在尝试这个教程http://www.asp.net/mvc/tutorials/getting-started-with-aspnet-mvc3/getting-started-with-mvc3-part4-cs但不是使用紧凑版的SQL Server我在本地计算机上使用完整安装。 我阅读本教程的方式是entity framework假设从我定义的对象创建表。 我的问题是,当我运行项目时,我一直收到无效的对象名称dbo.movi​​es。 我终于通过自己创建表来运行它,所以我知道连接字符串,一切都是正确的。 我的问题是,是否可以从C#中创建的对象生成表格,如果是这样的话?

附加类型为“X”的实体失败,因为同一类型的另一个实体

我在我的代码中偶然发现了一个奇怪的错误。 以前工作过,但现在有时工作。 我正在使用EF6来编辑具有某种关系的实体。 不编辑我’附加’它们的关系(参见示例代码)。 public void EditA(A ThisIsA, B ThisIsB) { using (var Context = new LDZ_DEVEntities()) { Context.As.Attach(ThisIsA); var b = Context.Bs.FirstOrDefault(x => x.BId == ThisIsB.BId); //var b = Context.Bs.Find(ThisIsB.BId); if (b != null) Context.Bs.Attach(b); else b = ThisIsB; if (bC != null) Context.Cs.Attach(bC); ThisIsA.Bs.Add(b); Context.SaveChanges(); } } 我编辑了名字以保持简单。 以下行 Context.Cs.Attach(bC); 抛出此错误: 附加类型为“C”的实体失败,因为相同类型的另一个实体已具有相同的主键值。 如果图中的任何实体具有冲突的键值,则在使用“附加”方法或将实体的状态设置为“未更改”或“已修改”时,可能会发生这种情况。 […]

在迁移中更改数据Up方法 – entity framework

我在现有模型中添加了一个新属性。 它是一个bool属性,默认值为true。 此表中存在现有数据,我想在Up方法中创建新字段后立即将一个特定行的新属性设置为false。 public override void Up() { AddColumn(“dbo.RequestValidationErrors”, “IsBreaking”, c => c.Boolean(nullable: false)); using (Context ctx = new Context()) { var validation = ctx.RequestValidationErrorSet.FirstOrDefault(x => x.WordCode == “RequestValidationError.MoreThanOneItemFound”); if (validation != null) { validation.IsBreaking = false; ctx.SaveChanges(); } } } 这样,EF在说话时抛出错误 System.InvalidOperationException:自创建数据库以来,支持’DbContext’上下文的模型已更改。 考虑使用Code First Migrations来更新数据库 是否可以在此更改数据库,还是应该在其他地方更改数据库?

LINQ to Entities – 查询中的IN子句

可能重复: Linq to Entities – Sql“IN”子句 如何在Entity框架4.0中实现SQL“in” 我怎样才能添加WHERE IN语句… SELECT * FROM myTable WHERE ID IN (1,2,3,4,5) 在entity framework中

entity framework代码首先使用一列作为主键,另一列作为自动增量列

我有一个名为Sale的课程 public class Sale { public int Id { get; set; } public string TrNo { get; set; } public DateTime Date { get; set; } public int CustomerID { get; set; } public ObservableCollection SaleDetails { get; set; } } 在数据库中,我想将Id作为Auto Increment列,将TrNo作为Primary Key列。 请先告诉我如何使用EF5代码执行此操作。 谢谢。

entity framework:SqlGeography与DbGeography

这两个对象在Microsoft SQL数据库中表示相同Geography数据类型的区别或预期目的是什么? System.Data.Entity.Spatial.DbGeography 和 Microsoft.SqlServer.Types.SqlGeography 它们不能在彼此之间进行转换,但是在创建点,多边形等时, SqlGeography还有其他命令。 我认为System.Data.Entity仅用于Entity Framework,而Microsoft.SqlServer是直接使用SqlCommand时使用的?

entity framework拆分表删除

我正在使用EF 4 STE来建模一个Attachment对象。 附件包含名称,描述,日期,最重要的是数据( byte[] )。 为了优化加载,我不希望在绝对必要之前检索Data属性,即当用户从客户端单击Download 。 为了遵循这种方法,我使用了这里描述的表拆分技术。 我将附件表拆分为附件 (名称,描述,日期)和附件数据(数据)。 这是我的EF模型中的一对一关系。 一切都很好,直到我尝试删除没有AttachmentData的附件 (即attachment.AttachmentData == null )。 我得到以下exception: 遇到无效数据。 缺少必需的关系。 检查StateEntries以确定约束违规的来源。 我看到了类似的post ,但我似乎无法使用STE和ApplyChanges扩展方法。 现在我的数据访问代码很简单:我调用context的ApplyChanges()然后调用SaveChanges() 。 我尝试了一个简单的删除SQL函数,并将其映射到两个实体,并实际工作; 但它打破了插入物。 我似乎无法将所有属性的插入函数映射到两个实体。 关于我可以尝试的其他一些选择的任何想法? Attachment和AttachmentData之间的关系可以是可选的吗? 当我将它设置为1到0+时,我得到一个映射错误,指出Their primary keys may collide 。 对任何建议开放。 谢谢!

在部分类中设置属性的属性

我有一个由Entity Framework (EF)生成的员工类。 public partial class employee { private string name; public string Name { get{return name;} set{ name = value;} } } 现在我想在name属性中放置一个必需的属性,用于在我编写的另一个员工部分类中进行MVC3validation,以扩展由EF生成的那个,这样我就不必重写我的代码了如果我刷新EF生成的模型。 我写的部分类在同一个程序集和名称空间中。 public partial class employee { // What should I write here to add required attribute in the Name property? }

Linq to Entities无法识别string.Format或concatenation’+’

我有下面的代码: using (DBContext context = new DBContext()) { myCollection = context.Items.Where(i => i.Type == 1).OrderBy(k => k.Name).Select(w => new { Alias = w.Name + string.Format(“{0}”, w.Id), Name = w.Name }).ToArray(); } 在运行时,我尝试连接字符串并尝试con转换整数w.Id为字符串时出错。 错误说: Linq to实体无法识别方法string.Format 也不支持串联符号’+’。 我通过引入AsEnumerable解决了这个问题: using (DBContext context = new DBContext()) { myCollection = context.Items.AsEnumerable().Where(i => i.Type == 1).OrderBy(k => k.Name).Select(w => new […]