问题标签 [entity-framework-6.1]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 实体框架6关系同步
我正在从 Entity Framework 4 (Visual Studio 2010) 迁移到 Entity Framework 6 (Visual Studio 2013) 并且在关系行为方面存在一些问题。
我目前正在使用 Visual Studio 中的默认模型设计器工具,它为我生成所有实体类。
假设我有两个实体,EntityA 和 EntityB。我在 EntityA 和 EntityB 之间有关系,因此 EntityA 有许多 EntityB(而 EntityB 有一个 EntityA)。
在 EF4 中,我可以编写如下代码:
这将打印 1。但在 EF6 中,打印 0。
这也会在 EF4 中打印 True,但在 EF6 中打印 False:
我不太喜欢这种行为,那么有没有办法让它自动同步关系更改,而不必像在 EF4 中那样手动添加两端的关系?即使我将对象添加到数据库上下文中,关系更新似乎也不会同步。
为 EF4 生成的类看起来比为 EF6 生成的类复杂得多,所以我可以理解这样的东西不起作用......
编辑:
经过一番调查,这似乎是 EF4.1 中引入的新 DbContext 的问题,与 EF6 无关。我在 EF4 中使用的旧 ObjectContext 没有这个问题。即使不推荐,仍然可以通过选择“EF 6.x EntityObject Generator”而不是“EF 6.x DbContext Generator”作为代码生成模板来使用较旧的 ObjectContext 模板。要显示此内容,必须首先将其作为在线模板下载。
我仍然在寻找比使用旧的 ObjectContext 模板更好的方法,这样我就可以使用更新的 DbContext。
entity-framework - 实体框架获取父级包括
这段代码可以更有效地完成吗?
模板应包括其子单元。
要使用包含,我必须返回模板而不是 singleOrDefault 模板...
这在技术上有效并编译:
这不起作用,因为 .Include() 仅在 IEnumerable 上可用
如何改进工作代码?
c# - C# - Entity Framework 6.1 - 检查 MySql 数据库中已删除的行
我在断开连接的数据库优先方案中工作,并且正在使用单个数据库表填充 DataGridView。我想保持 DGV 和数据库表同步,所以我需要检查是否有人更新/删除了表行(无需重新加载整个表)。我已经完成了一种查找更新的 DB 行(使用 TimeStamp)并更新 DGV 的方法,但我不知道如何检查行是否已从 DB 表中删除(以便从我的 DGV 中删除这些行)。
我怎样才能做到这一点?
c# - MVC 4 实体框架 6.1 DataAnnotationValidator 错误日期
我有一个使用 DataAnnotationValidator.cs 作为验证的一站式类的 EF 模型。我喜欢这种方法,但日期数据类型除外。我发现了很多关于验证除日期之外的所有内容的信息。您如何使用这种技术验证日期?以下正确显示日期,但允许任何格式正确的输入作为有效日期:32/32/2014 通过测试,但 32//2014 没有。
我已经尝试过使用和不使用 [DataType(DataType.DateTime)]。我试过正则表达式没有成功。我肯定错过了什么。任何帮助表示赞赏。谢谢你。
更新:找到这个解决方案。修改如下。虽然不完全是我想做的,但到目前为止效果很好。我只需要在 jQuery 中添加一些验证
在 \Shared\EditorTemplates 中创建了一个 DateTime.cshtml,其中包含以下内容:
我将以下 jQuery 添加到我的 DemographicsView。我计划在 _Layout.cshtml 中测试 jQuery 以了解它如何影响整个站点。
c# - NHibernate 在实体框架中的 SchemaUpdate(代码优先)?
在 NHibernate 中进行原型设计期间,我只是将一个属性添加到一个类中,然后SchemaUpdate
将一个新列添加到数据库表中(如果可能的话)。
有一个类似的老问题:Updating database schema with Entity Framework Code First
Entity Framework 6.1+ 中是否有类似的东西?或者是否有一个 Entity Framework 的 3rd-party 开源库,它正在做类似的事情SchemaUpdate
?
c# - 插入而不是更新历史数据?
我正在使用 EF 6.1 Code First 并希望通过使用如下模型(简化)来跟踪历史数据:
它们以下列方式连接到 DbContext 中:
现在要跟踪不同的客户版本,我需要对 CustomerData 的更改执行插入而不是更新。为此,我SaveChangesAsync()
挂钩DbContext
:
现在我不确定如何实现InsertInsteadOfUpdate()
,这是我迄今为止的方法:
但是,我不知道如何获取DbEntityEntry<CustomerData>
. 而且因为我都需要修改“旧”条目(设置ValidUntil
)并插入一个新条目,所以我需要两个不同的条目。
我该怎么做呢?还是我完全走错了路?
c# - 如何将 State.Modified 更改为 State.Added 但使用新密钥?
每当继承自的实体HistoricalData
发生更改时,我都想做插入而不是更新。
这是带有 Key 的抽象基类{VersionID, ParentID}
:
这是我的方法DbContext
:
我更改了VersionID
,因为它是一个标识列,我希望数据库为插入创建一个新值。
但是,我得到以下异常:
System.InvalidOperationException:属性“VersionID”是对象的关键信息的一部分,无法修改。
如果我不尝试修改VersionID
,则插入失败并出现 DuplicateKey 异常。
有什么方法可以将 DbEntityEntry 从已修改更改为使用新 ID 添加?
c# - 首先从 EF 6.1 代码生成 SQL 视图
我刚刚将我的应用程序从数据库优先更改为代码优先!部署方面有多么大的改进!但现在我有以下问题。我从我的数据库生成了我的代码优先模型,但是在从生成的代码重新创建数据库之后,我的数据库中的视图就像表格一样生成了!
如何首先从代码生成我的视图?如果我需要手动生成它们和/或将它们映射到我的实体?
编辑。
Luke McGregor 的帖子确实让我很接近。是的,它现在生成视图。但是迁移不起作用。
尝试执行 Update-Database 语句时,初始输出是仍有代码更改。
因此,我执行了 Add-Migration xxx 命令并再次触发了 Update-Database 命令。
编辑2:
解决我的代码优先代码和视图的 SQL 代码之间的一些差异解决了这个问题!
c# - 首先在实体框架代码中生成一个 CHAR(32) 列
我希望我的string
类字段在数据库中生成一char(32)
列。我首先使用 Entity Framework 6.1 代码。
此代码nvarchar(32)
在数据库中生成一个。
如果我unicode: false
在DbMigration
类中添加(我没有为此找到注释属性),它会生成一个varchar(32)
.
如果有办法生成char(32)
与我的字符串关联的列?
c# - EF 6.1 和维护视图
昨天我问了这个问题:Generating a SQL view from EF 6.1 code first
而且我认为一切正常,尽管在生成新迁移时我仍然遇到一些麻烦。当我生成一个新视图时,EF 会在它想要更改的视图中看到一些变化或不规则。但是,据我所知,视图的列 cq 主键是不可更改的?
有人知道解决方案吗?
起初我以为 MyView1.Name 字段不等于 view 字段。但在数据库中,该字段是正常的: varchar(255) not null 在我的代码中它是一个最大长度为 (255) 的字符串。
所以我不明白如何避免这一代?有任何想法吗?
编辑:
我唯一理解的是 MyView2.Price 字段,它是我的代码中的小数(标准 18,2)。和数据库中的小数(19,4)。所以可以在更改我的模型时解决这个问题。但是字符串??还是不知道。。