我正在当前解决方案中的单独项目中实现代码优先模式。 由于我这样做并且我在DbContext初始化我的连接字符串,我得到了这个奇怪的错误: 无法确定存储版本; 需要有效的存储连接或版本提示。 我正在使用Entity Framework 5.0.0.0,我的其他解决方案项目工作得很好,因为他们使用EDMX文件进行数据库访问,但只有我的代码第一个项目抛出此exception。 它是什么,为什么?
我有这样的模特 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项目 .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。 我可以查询表并加载实体,但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有界上下文。 这是一个示例上下文: 我有一个实体类型配置文件,每个实体都有适当的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个单独的背景,这也可能成为维护的噩梦。 或者,我可以为每个上下文设置非常具体的实体模型,但这又会导致实体类爆炸以及重复配置中的潜在维护问题。 在实施有界上下文时,如何才能最好地管理和维护实体及其实体配置?
我有一个遗留数据库,我想与Entity Framework进行交互。 数据库高度标准化,用于存储有关航class的信息。 为了更容易使用某些数据,已经编写了许多SQL视图来展平数据并将某些多表连接转换为更多逻辑信息。 快速浏览一下后,我发现在EF中使用Views有两个问题。 视图包含大量的键。 一些快速谷歌搜索似乎表明我将需要手动编辑EDMX文件以删除此信息。 视图与其他表实体没有任何关系。 需要手动添加这些关联才能链接视图 – >表。 当DBA团队进行更改时,从DB中刷新模型时,这两者似乎都是主要的难点。 这是您在使用EF时需要“忍受”的东西,还是有任何建议的模式/做法来处理这些问题。
我正在实现允许用户互相关注的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 […]
我正在学习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; } 可能吗? 如果是这样,怎么样?
现在我正在从Pluralsight上的video中学习很多关于entity framework的内容,所以请原谅我的问题可能看起来很新,但我无法理解复杂类型是什么或为什么我需要它们。 我知道我必须通过Annotations或Fluent Api映射它们,如下所示: modelBuilder.ComplexType(); 也许有人可以为我详细说明复杂类型的需求?
我有这个简单的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 = […]