Tag: entity framework

ef4导致Web服务中的循环引用

我有一个Reason对象: public class Reason { public virtual long Id { get; set; } public virtual string Name { get; set; } public virtual Company Company {get;set;} } 我使用entity framework4,公司是公司的导航属性。 我还使用webservices将数据返回给客户端。 我有web方法返回原因: [WebMethod] public Reason[] GetCallReasons() { IReasonRepository rep = ObjectFactory.GetInstance(); return rep.GetReasonsList().ToArray(); } 由于ef4,我在执行web方法时遇到以下exception: A circular reference was detected while serializing an object of type […]

是否在Asp.net MVC中延期执行查看非常糟糕的事情?

假设我有通过entity framework获得的以下模型: public class User{ public string Name {get;set;} public int Id {get;set;} } 从用户表中获取所有用户: IEnumerable users = from u in myDbContext.Users select u; 在View中重新查看用户(@model IEnumerable): @foreach(var item in Model) { @item.Id @item.Name } 我的新老板告诉我,这样做是不符合MVC,性能会非常糟糕。 我应该做的是使用.ToList()将Controller中的所有USERS资格化。 我不确定什么是更好的,因为无论哪种方式用户必须实现,我没有看到任何性能损失。

代码优先EF6的多租户

我们的组织需要一个单一的数据库,多租户 ( 通过表模式,而不是租户id )架构。 这里有一篇很棒的文章开始介绍这类事情: http : //romiller.com/2011/05/23/ef-4-1-multi-tenant-with-code-first/ 在文章的中间,写道: 您会注意到(可能有些沮丧)我们需要编写代码来为每个实体配置表模式。 不可否认,这个代码周围没有很多神奇的独角兽……在EF的未来版本中,我们将能够用更清洁的自定义约定代替它。 我们的目标是以最干净的方式拥有一个上下文类,我们可以使用它来连接到具有相同模型的多个模式。 ( 请注意,modelBuilder.HasDefaultSchema似乎不够用 ,因为它仅适用于EF首次初始化上下文并运行OnModelCreating时) EF5或EF6中是否存在上述清洁自定义约定? 或者是否有更清洁的方式来处理这个? 注意:我也在开发论坛上问了这个问题,因为它似乎更多地与EF的方向有关,但是想看看这里是否有人有其他选择。 注2:我不担心迁移,我们会分开处理。

entity framework6代码优先自定义函数

我正在尝试类似的东西: 如何使用带有linq的标量值函数实体? 但是我没有使用EDMX,而是先使用DbContext和代码。 我遇到过这个: https://codefirstfunctions.codeplex.com/ 但用法并不合适。 我想要实现的是能够做到这一点: var locations = context.Locations.Where(e => Functions.LatLongDistanceCalc(e.Lat, e.Long, lat, long) >= 10) 它将在SQL Server上调用标量函数(LatLongDistanceCalc)。 没有使用EDMX有没有办法做到这一点? 我知道你可以构建一个手动查询,但这不会是优先的,因为我想带回具有延迟加载代理等的实体以及构建更复杂的查询。

是否可以在Entity Framework中捕获0..1到0..1的关系?

有没有办法在Entity Framework中为可为空的外键关系制作可为空的反向导航属性? 在数据库用语中,有一个0..1到0..1的关系。 我尝试过如下,但我不断收到错误消息: 无法确定类型“Type1”和“Type2”之间关联的主要结尾。 必须使用关系流畅API或数据注释显式配置此关联的主要结尾。 public class Type1 { public int ID { get; set; } public int? Type2ID { get; set; } public Type2 Type2 { get; set; } } public class Type2 { public int ID { get; set; } public int? Type1ID { get; set; } public Type1 Type1 { get; […]

使实体类关闭以进行更改

我有一个数据库关系,如下所示。 域对象是基于LINQ to SQL ORM创建的。 付款包括现金付款和礼品券付款。 假设购买总额为550.可以按以下组件支付 1 Gift Coupon Valued 300 1 Gift Coupon Valued 200 I Cash Currency Valued 50 我正在使用ORM的“InsertOnSubmit”function插入新的付款记录。 以下代码工作正常。 但是,如果我公司使用信用卡引入新的支付组件,我需要更改我的“付款”域类。 如何使支付类打开以进行扩展并关闭仍在使用ORM的 更改 ? 注意:Payment类具有行为 (例如GetTotalAmountCollected)。 我正在努力使“付款”类满足OCP。 注意:优惠券类型有特定的行为 。 优惠券发行日期是否小于2000年1月1日,不应用于计算总金额(即,CouponValue应为零)。 请参阅使用策略模式重构代码 。 注意:我使用的是.Net 4.0 参考: 将ObjectContext.AddObject与Entity Framework一起使用时出错 使用策略模式重构代码 喜欢构成而不是inheritance? 代码优先与模型/数据库优先 使用Unity的策略模式和dependency injection 委托与OOP的C#策略设计模式 如何在C#中使用策略模式? EF代码优先inheritance:第2部分 – 每种类型的表(TPT) http://weblogs.asp.net/manavi/archive/2010/12/28/inheritance-mapping-strategies-with-entity-framework-code-first -ctp5部分-2-表每类型tpt.aspx C#代码: public […]

为什么EF 6教程使用异步调用?

关于如何将EF 6与MVC 5一起使用的最新EF教程似乎倾向于使用对数据库的asych调用,如: Department department = await db.Departments.FindAsync(id); 这是新的标准/最佳做法吗? 我不确定ASP.NET MVC的这种开发风格有什么好处。 有人可以评论这种模式,这是MS推广的新标准吗?

使用多个字段过滤/搜索 – ASP.NET MVC

我在EF 6中使用ASP.NET MVC 。 我有一个库存页面,显示库存商品的所有信息。 现在我想过滤记录。 在下图中我有3个选项。 我可以按每个选项进行过滤,一次一个,或者两个或全部三个组合。 我正在考虑为所选的每个选项编写linq查询。 但是如果filter选项增加,这将是不可能的。有更好的方法。 谢谢! 这就是我在我的控制器中所做的。(目前下拉有两个选项,不包括:“ – 选择一个 – ”) public ActionResult StockLevel(string option, string batch, string name) { if (option != “0” && batch == “” && name == “”) { if(option == “BelowMin”) { List stk = (from s in db.Stocks where s.Qty < s.Item.AlertQty select s).ToList(); […]

Linq to Entities中的动态where子句(OR)

在这里的post中,我学习了如何使用Linq的延迟执行来构建动态查询。 但查询实际上是使用WHERE条件的AND连接。 如何使用OR逻辑实现相同的查询? 由于Flags枚举,查询应搜索Username , WindowsUsername或两者 : public User GetUser(IdentifierType type, string identifier) { using (var context = contextFactory.Invoke()) { var query = from u in context.Users select u; if (type.HasFlag(IdentifierType.Username)) query = query.Where(u => u.Username == identifier); if (type.HasFlag(IdentifierType.Windows)) query = query.Where(u => u.WindowsUsername == identifier); return query.FirstOrDefault(); } }

Enable-Migrations使用“2”参数调用“SetData”的exception

我创建了一个基于.NET 4.6.2版本的库。 在库中,我添加了EntityFramework版本6.1.3包。 我创建了一个模型如下 using System; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; namespace Components.Models { public class Session { [DatabaseGenerated(DatabaseGeneratedOption.Identity)] public string Id { get; set; } [Key] [Required] public string Identity { get; set; } [Required] public DateTime CreatedAt { get; set; } [Required] public DateTime UpdatedAt { get; set; } } } 和dbcontext using System.Configuration; […]