Tag: entity framework

asp.net MVC 4,标记地点 – 最佳实践(例如酒吧,商店,餐厅)

ASP.NET MVC 4 Web应用程序,EF 5,SQL Server 2012 Express,Visual Web Developer 2012 Express,Code First 我有一个place对象 – 我想为每个地方添加多个标签。 最好的方法是逗号分隔的字符串或相关对象吗? 任何设计模式或方法来管理整个事物(添加,查找,与地点相关联等)? 良好的表现也是有意义的。 标记由管理员完成,因此以易于使用为代价的速度/易于实现是可以接受的。 谢谢。

如何在entity framework查询中使用左连接?

我正在使用entity framework4.5。 我必须将SQL查询转换为实体查询: SELECT Customer.CustCode, Invoice.InvoiceId, Invoice.BatchNumber, Invoice.InvoiceDate, Invoice.AdjustFlag, Invoice.InvoiceAmount, Invoice.InvoiceNote, Invoice.AmountPaid, Customer.BillingContact, Customer.BillingCompany, Customer.BillingStreet1, Customer.BillingStreet2, Customer.BillingCity, Customer.BillingState, Customer.BillingZip, [Order].PickupDate, [Order].OrderNumber, [Order].OrderTotal, [Order].ProNumber, [Order].PickupCompany, [Order].PickupCity, [Order].PickUpState, [Order].Dcompany, [Order].Dcity, [Order].Dstate, CONVERT(varchar(5), DeliverInTime, 114) AS DelInTime, [Order].PiecesWeight1, [Order].BaseRATE, [Order].POD, [Order].Requester, [Order].Po1, [Order].Po2, AccessorialCharge.Description, OrderDriverExtraCharge.AccessorialChargeDesc, OrderDriverExtraCharge.AccessorialChargeAmount, [Order].NormalDiscount, – 1 * [Order].DISCAmount AS DISCAmount FROM (((Invoice INNER JOIN [Order] […]

如何使用通用存储库模式的连接 – entity framework

我有一个像下面的Generic Repository来处理我的CRUD ,对于一个易于使用的单个实体,当我尝试加入我的POCOs 。 假设我有这些POCO,它们使用流畅的api(多对多和一对多关系)进行映射: public class Student { public Student() { this.Courses = new HashSet(); } public int StudentId { get; set; } public string StudentName { get; set; } //FKs public virtual Standard Standard { get; set; } public int StdandardRefId { get; set; } public virtual ICollection Courses { get; set; } […]

如何附加在创建/更新或检测到表中的更改时执行的其他操作?

我正在使用Entity Framework,当我在表中插入或更新Row时,我想执行其他操作。 不仅是来自数据库的存储过程而且是代码中的实际function – 优选基于事件。 (异步执行)两种方案都应该触发向处理程序发送一些消息或以其他方式启用函数的执行。 1)创造 var Row = DbContext.Table.GetById(Id); Row.SomeColumn = newValue; DbContext.SaveChanges(); 2)更新 var Row = new Row(valOfColumn1, …); DbContext.Table.AddObject(Row); DbContext.SaveChanges(); 在你回答之前 : 在执行当前更新和插入时查找位置不包括将来应该始终与执行所述额外function相关联的用法。 建立一个应该总是使用专用函数创建或更新表不是一个选项,因为我需要假设人们不会意识到使用提到额外function的必要性。

实体类别; 类似的遗产问题

除了工作之外,我和一些朋友正在努力建立各种游戏; 我们构建其中一些方法的方式对于正常的面向对象方法非常有效,但是正如大多数开发人员将certificate的那样,并不总能将自身很好地转换为数据库持久化方法。 这不是我们所拥有的绝对布局,它只是为了表示而给出的样本模型。 整个项目都是在C#4.0中完成的,我们都打算使用Entity Framework 4.0(除非Fluent nHibernate能够真正为我们提供我们在EF中无法做到的事情)。 我们一直在运行的问题之一是inheritance数据库模型中的东西。 使用Entity Framework设计器,我可以绘制下面的代码; 但我确信很明显,它不像预期的那样有效。 澄清一点; ‘物品’有奖金,可以是任何东西。 因此,游戏的每个部分都必须从类似的东西中衍生出来,这样无论什么“改变”,它都处于足够基本的水平。 听起来相当简单明了,对吧? 那么,我们从’Unit’inheritance了与游戏相关的所有内容。 权重,度量,随机(想象骰子,也许?),还有其他这样的实体。 其中一些是相似的,但在代码中,它们每个都会有不同的反应。 我们在将这种事物抽象到数据库模型中时遇到了一个非常大的问题。 如果没有“Enum”支持,很难将其转换为仍然共享共同列表的多个表。 我们描述的一种解决方案是使用“密钥环”类型方法,其中附加到字符的所有内容都存储在带有“密钥”的“环”上,其中每个密钥具有表示类型的值。 这在function上起作用,但我们发现它变得非常缓慢并且表现不佳。 我们也不喜欢这种方法,因为它开始觉得好像所有东西都被“倾倒”在一个类中; 这使得管理和逻辑结构难以遵守。 我希望其他人对我能解决这个问题有什么想法。 它真的把我推到了墙上; 总结一下 ; 目标是构建一个类型(单元),可以用作基本类型(每个类型的表),用于跨相对全局范围的通用引用 ,而不必将所有内容转储到单个集合中。 我可以使用一个接口来确定实际行为 ,这不是一个大问题。 alt text http://img171.imageshack.us/img171/5153/modelg.png 这与entity framework中表达的“大致”相同。 alt text http://img684.imageshack.us/img684/6454/entities.png

使用AsNoTracking()entity framework延迟加载

我们目前正在使用延迟加载entity framework并运行out of memory exception 。 我们遇到此exception的原因是因为Linq查询加载了大量数据,而在后期阶段它使用延迟加载来加载导航属性。 但是因为我们不使用NoTrackingChangesentity framework缓存非常快速地构建,这导致内存不足错误。 我对EF的理解是我们应该始终在查询中使用NoTrackingChanges ,除非你想从查询中更新返回的对象。 然后我使用NoChangeTracking测试: var account = _dbcontext.Account .AsNoTracking() .SingleOrDefault(m => m.id == 1); var contactName = account.Contact.Name 但是我收到以下错误: System.InvalidOperationException:当使用NoTracking合并选项返回对象时,只能在EntityCollection或EntityReference不包含对象时调用Load。

是否有可能在插入/更新之前在POCO中执行操作?

让我们假设这个entity framework示例: public class User { public int UserID { get; set; } public string Name { get; set; } } public class MyDbContext : DbContext { public DbSet Users { get; set; } } class Program { static void Main(string[] args) { using (var db = new MyDbContext ()) { var user = new […]

添加或删除dbSet和本地属性中的实体有何区别?

当我想删除一个属性时,我有两个选择: myDbContext.MyType.Add(myEntity); myDbContext.MyType.Local.Add(myEntity); 在这两种情况下,至少在我的情况下,看不出差异,但我不知道它是否有不同的行为。 是真的一样吗? 谢谢。

EF Code First使用多对多关系

我正在使用Visual Studio 2010,C#4.0和Entity Framework 5.0。 我多年来一直在使用数据库优先开发,但我正在尝试先迁移到代码并遇到问题。 阅读和搜索似乎没有解决问题 我已将我的问题简化如下 – 我有两个类 – 评估者和文档。 public class Assessor { public int AssessorID { get; set; } public virtual List Documents { get; set; } } public class Document { public int DocumentID { get; set; } public string DocumentLocation { get; set; } public string DocumentName { get; […]

DDD和entity framework类

我已经阅读了很多关于DDD的文章并且理解,我应该在基础结构级别使用我的域模型类,因此,我应该使用与Entity Framework基础结构相同的类并使用它们来生成表(代码优先方法)等。但是我的域模型可以与Relational DB模型完全不同。 为什么我不能创建另一个模型,基础架构模型,创建关系数据库模型,不要将域模型与EF类混合?