Tag: entity framework

无法确定存储版本 – entity framework

我正在当前解决方案中的单独项目中实现代码优先模式。 由于我这样做并且我在DbContext初始化我的连接字符串,我得到了这个奇怪的错误: 无法确定存储版本; 需要有效的存储连接或版本提示。 我正在使用Entity Framework 5.0.0.0,我的其他解决方案项目工作得很好,因为他们使用EDMX文件进行数据库访问,但只有我的代码第一个项目抛出此exception。 它是什么,为什么?

EF7(Core)中同一个表的多个关系

我有这样的模特 public class Question { public string Id { get; set; } = Guid.NewGuid().ToString(); public Answer Answer { get; set; } public List Variants { get; set; } public string CorrectVariantId { get; set; } public Variant CorrectVariant { get; set; } } public class Variant { public string Id { get; set; } = […]

WPF / EntityFramework上下文生命周期

问题 我们目前在WPF应用程序上遇到架构问题。 它涉及EntityFramework上下文管理,它实例化一次并在应用程序的整个生命周期中使用。 因此,我们最终会遇到缓存问题,实体在加载一次时不会更新。 使用该应用程序时,我们的实体已过时。 技术规格 Wpf项目 .Net Framework 4客户端配置文件 MEF(包含在Framework 4.0 System.ComponentModel.Composition中) 设计模式MVVM 多用户应用程序 建筑 这是当前架构的架构。 服务层 管理对业务规则的调用(业务层) 业务规则完成后保存上下文(通过UnitOfWork) 只能由ViewModel调用 业务层 定义业务规则 只能由服务层调用 存储库层 执行更改上下文数据的方法(插入,更新,删除) inheritanceReadOnlyRepository 只能由业务层调用 ReadOnlyRepository图层 返回数据的执行方法(选择) 可以随处调用(ViewModel,服务层,业务层) 的UnitOfWork 管理上下文实例化 保存上下文 上下文仅适用于存储库 码 视图模型 [Export(typeof(OrderViewModel))] [PartCreationPolicy(CreationPolicy.NonShared)] public class OrderViewModel : ViewModelBase { private readonly IOrderManagementService _orderManagementService; private readonly IOrderReadOnlyRepository _orderReadOnlyRepository; [ImportingConstructor] public […]

EntityFramework Core 1.1.0缺少Include()?

我正在使用EntityFramework Core 1.1.0。 我可以查询表并加载实体,但Microsoft的指令表明我是否要加载关系数据,我应该使用.Include()函数: https://docs.microsoft.com/en-us/ef/core/querying/related-data 您可以使用Include方法指定要包含在查询结果中的相关数据。 在以下示例中,结果中返回的博客将使用相关post填充其“ Posts属性。 using (var context = new BloggingContext()) { var blogs = context.Blogs .Include(blog => blog.Posts) .ToList(); } 我没有.Include()选项。 任何想法为什么缺少或如何加载外键关系数据? this.context.Mail .Include(“Files”) // This is missing 我已经使用显式加载关系数据。 这适用于小型结果集,但随着我的数据集的增长,这将让我感到悲伤。 var mails = this.context.Mail.ToList(); mails.ForEach(mail => { this.context.Entry(mail) .Collection(m => m.Files) .Load(); });

使用DDD有界上下文的实体配置管理

我正在尝试实现此处概述的多个DDD有界上下文。 这是一个示例上下文: 我有一个实体类型配置文件,每个实体都有适当的FluentAPI映射(使用EF工具进行反向工程)。 这些配置文件还包括关系配置。 例如:UserMap.cs // Relationships this.HasOptional(t => t.SecurityProfile) .WithMany(t => t.Users) .HasForeignKey(t => t.SecurityProfileCode); SecurityProfile和DomainPermission不是DbSets中的DbSets 。 由于User和Module上的导航属性,它们会自动进入模型。 这导致我的第一个问题。 将User (或任何其他实体)添加到任何其他上下文时,我必须记住执行以下两项操作之一: 还要将配置添加到SecurityProfile的模型构建器(以及实体上的每个其他关系) 以某种方式明确地从模型中排除SecurityProfile 。 这开始变成一个维护噩梦。 我很满意明确地“修剪”实体图,如上面第2点所述。 但是,当实体配置文件中已经定义了关系时, Ignore()实体似乎不可能。 尝试使用modelBuilder.Ignore(); 对于上面的上下文OnModelCreating在ConfigureAssociations()给出以下错误: System.InvalidOperationException:导航属性“SecurityProfile”不是“User”类型的声明属性。 validation它是否未从模型中明确排除,并且它是有效的导航属性。 我能想到的唯一解决方案是inheritance基本配置类并覆盖每个上下文中的关系配置。 考虑到我们最终可能会有30-40个单独的背景,这也可能成为维护的噩梦。 或者,我可以为每个上下文设置非常具体的实体模型,但这又会导致实体类爆炸以及重复配置中的潜在维护问题。 在实施有界上下文时,如何才能最好地管理和维护实体及其实体配置?

最佳实践 – 在EntityFramework中将表实体与View-Entities混合使用?

我有一个遗留数据库,我想与Entity Framework进行交互。 数据库高度标准化,用于存储有关航class的信息。 为了更容易使用某些数据,已经编写了许多SQL视图来展平数据并将某些多表连接转换为更多逻辑信息。 快速浏览一下后,我发现在EF中使用Views有两个问题。 视图包含大量的键。 一些快速谷歌搜索似乎表明我将需要手动编辑EDMX文件以删除此信息。 视图与其他表实体没有任何关系。 需要手动添加这些关联才能链接视图 – >表。 当DBA团队进行更改时,从DB中刷新模型时,这两者似乎都是主要的难点。 这是您在使用EF时需要“忍受”的东西,还是有任何建议的模式/做法来处理这些问题。

entity framework类中的两个相同的类类型问题

我正在实现允许用户互相关注的function。 我有数据库表: User{UserId, FirstName, LastName etc.} Followings{FollowerUserId, FollowingUserId, CreatedOnDate etc.} 所以我添加了EF类: public class Follow { [Key, Column(Order = 1)] public Guid FollowerUserId { get; set; } [Key, Column(Order = 2)] public Guid FollowUserId { get; set; } public DateTime CreatedOnDate { get; set; } public virtual User Follower { get; set; } public virtual User […]

我可以让entity framework使用具体类而不是接口(用于Web服务序列化)

我正在学习Web服务,我正在使用的书是使用entity framework从SQL服务器中提取数据(我对此也知之甚少)。 不幸的是,entity framework创建的类包含以下内容: public Conference() { this.Sessions = new HashSet(); } public virtual ICollection Sessions { get; set; } 这导致问题,因为接口不可序列化: 无法序列化System.Collections.Generic.ICollection类型的成员X …因为它是一个接口。 现在我可以(并且确实)修改生成的类以使用具体类,但如果我需要重新生成实体,则该更改将被撤消。 理想情况下,我可以告诉entity framework生成这样的东西(或者甚至更好,控制具体类型,这样我就可以告诉entity framework如果我想要使用List): public Conference() { this.Sessions = new HashSet(); } public virtual HashSet Sessions { get; set; } 可能吗? 如果是这样,怎么样?

什么是具有entity framework的上下文中的复杂类型

现在我正在从Pluralsight上的video中学习很多关于entity framework的内容,所以请原谅我的问题可能看起来很新,但我无法理解复杂类型是什么或为什么我需要它们。 我知道我必须通过Annotations或Fluent Api映射它们,如下所示: modelBuilder.ComplexType(); 也许有人可以为我详细说明复杂类型的需求?

dbcontext和objectcontext中的NULL处理

我有这个简单的LINQ查询 from e in Employees where e.DesignationID !=558 select e 这里的DesignationID是一个可以为空的字段: 在objectcontext ,查询被转换为: SELECT [Extent1].[EmployeeID] AS [EmployeeID], [Extent1].[EmployeeCode] AS [EmployeeCode], [Extent1].[EmployeeName] AS [EmployeeName], [Extent1].[DesignationID] AS [DesignationID] FROM [dbo].[setupEmployees] AS [Extent1] WHERE 558 [Extent1].[DesignationID] 虽然dbcontext的相同查询被翻译为: SELECT [Extent1].[EmployeeID] AS [EmployeeID], [Extent1].[EmployeeCode] AS [EmployeeCode], [Extent1].[EmployeeName] AS [EmployeeName], [Extent1].[DesignationID] AS [DesignationID] FROM [dbo].[setupEmployees] AS [Extent1] WHERE NOT ((558 = […]