问题标签 [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.
entity-framework - Entity Framework 6 - 启用迁移时不创建表
在我的应用程序中,我通过一些迁移启用了 Code First 迁移,并且我使用 SQL Server Compact 进行集成测试。
当我运行测试时,Entity Framework 创建一个空数据库并尝试在该空数据库上运行迁移并抛出The specified table does not exist.
根据这份报告,我认为 Entity Framework 6 中迁移的使用已经改变。
我测试了所有数据库初始化程序,Context.Database.Create();
但在所有情况下都没有创建 tabale。
c# - 在自定义类型选择中使用急切加载/“.Include”?
这是对THIS的后续问题。
我有大约同样的问题,但解决方案对我来说不是 100% 有效。
我有如下查询:
和在选择中添加到“技巧”中的急切加载,因为查询中的AccessRight
sRoles
被忽略,因为我不查询. Permissions
Include
entity type
但这并不如我所愿。item.Item.AccessRight
由AccessRight = i.AccessRight
in加载,Select
并且可以在我的视图中使用,我只传入,但item.Item
不是(但正确加载)。
所以看起来这个“技巧”只适用于“一个级别”。item.Item.AccessRight.Roles
item.Item.AccessRight.Permissions
item.Roles
item.Permission
有没有办法解决这个问题?
现在有没有办法使用新版本的 EF 来完成这项Include
工作,因为这将是 IMO 的最佳解决方案?
或者我至少可以让“多层次”的技巧发挥作用吗?
我目前唯一可以工作的解决方案是不通过item.Item
,而是完整item
并使用item.Roles
而不是item.Item.AccessRight.Roles
,但这不是很直观(因为它在某些用途时崩溃,item.Item.AccessRight.Roles
因为他没有意识到问题)并且需要进行一些更改在我的整个申请中。
我也尝试过使用Include
after Select
,但这给了我一个例外,因为在Select
我没有 an之后entity type
。
也许对于我的基本问题还有一个完全不同的解决方案:
我只想选择我Category
的和最新Revision
的,而不是所有的修订(因为这些可能很多)。如果有没有我的自定义类型的解决方案,我也可以使用该解决方案。
更新:
这是我的数据库的简化模型:
所以有一个1:n
forCategory:Revisions
,1:1
forCategory:AccessRight
和n:m
forAccessRights:Roles
andAccessRights:Permissions
。
以下查询也可以,但获取所有修订,而不仅仅是最新的:
c# - 在实体框架中使用 .include 创建巨大的查询?
我没想到会生成这样的查询...
放回去,如果我保留一个包含,查询看起来不错,它做了一个简单的左连接
询问:
生成的 SQL:
如果我有不止一个,查询会变得疯狂,UNION ALL...
这是预期的行为吗?如果是,是否可以在为所有这些使用多个简单的左连接时保留一个包含的行为?
模型:
询问:
生成的 SQL:
sql server 结果
为什么 8 行 2 就足够了?
此数据库示例未使用索引等进行优化,但这是执行计划
理想情况下,我想生成一个看起来像这样的查询,同时保持实体框架跟踪更改,因为我将使用对象来更新数据库
ef-code-first - Entity Framework 6 (EF6) 代码首先迁移与单独项目中的模型
使用 EF6 代码优先迁移,我能够成功保存模型并为它们创建新的迁移。但是,我的 DbContext 类在一个Sharp.Data
项目中,实际的(Sql CE)数据库位于Sharp.Server
项目 bin 文件夹下,而我的模型位于一个Sharp.Common
项目中。
当我运行时add-migration -ProjectName Sharp.Data Migration3
(指向Sharp.Data
DbContext 所在的位置),它成功运行并识别对Sharp.Common
项目中模型所做的更改。但是,当我运行时update-database -ProjectName Sharp.Data
,它会更新/创建/迁移/播种位于我Sharp.Data
项目的 bin 文件夹下的新数据库,而不是Sharp.Server
应用程序最终从中读取数据的地方。
有没有办法做到这一点?让迁移生成/更新存在于其自己项目文件之外的其他地方的数据库?这可能是使用 SQL CE 的遗留物,但出于各种原因,它是我选择的数据库。
entity-framework-6.1 - 实体框架6.1重复唯一索引异常处理
如何在实体框架 6.1 中duplicate key row with unique index
使用属性处理 SqlException ?[Index(IsUnique = true)]
ef-code-first - 如何更改 Entity Framework 6 中字符串属性的默认最大长度?
默认情况下,实体模型中未明确指定最大长度的字符串属性在nvarchar(max)
数据库中设置为。我们希望覆盖这个约定,并给字符串一个最大长度,nvarchar(100)
如果它们还没有明确设置的话。
我发现了PropertyMaxLengthConvention
内置约定,根据它的描述和文档,这似乎是我正在寻找的。但是,它要么不起作用,要么我用错了,要么它没有做我认为它做的事情。
我试过简单地添加约定:
然后我想也许默认的已经被使用了,所以我先尝试删除它:
我什至尝试在默认约定之前和之后明确添加约定:
没有喜悦。当我添加迁移时,列仍然创建为nvarchar(max)
.
有没有办法使用该约定来做我想做的事?如果没有,我是否可以编写一个自定义约定,将默认字符串属性设置为nvarchar(100)
但仍允许我将它们显式设置为不同的值,包括 maxlength?
sql - 未生成 EF 6.1 索引 IsUnique
我有以下代码第一实体:
但是在使用 SQL Management Studio 检查数据库时,有多个同名的行:
我的上下文很简单:
检查 SQL 2014 Express 数据库表索引,没有生成(只有 PK 存在)。
有什么我没有做的事情需要索引才能工作吗?
c# - 如何在实体框架中设置 OnDelete 级联
我有两张桌子,BookCategory & Books。一个类别可以有多本书。我正在使用实体框架。在删除特定 BookCategory 时,我想删除同一类别的所有书籍。
我不确定在哪里设置 OnDelete = Cascade 的规则。以下是我的代码。
如果需要更多信息,请告诉我。
1]我的数据库(bookCatalog.Context.cs)
2]我的书课(Book.cs)
3] 我的 BookCategories 类(BookCategory.cs)
4]图表xml(bookCatalog.edmx.diagram)
但是在删除 BookCategory 时出现以下错误。
这是我删除类别的代码
c# - 如何在 Guid 中使用包含?
我正在尝试从集合中的上下文中获取所有实体。虽然它以这种方式工作:
它以这种方式以异常结束
请注意Id
是类型Guid
我的问题是如何编写第二个查询以从 message.Tasks 集合中的上下文中获取所有任务?
编辑
不支持异常
无法创建类型为 'DataObjects.KeyValueDataObject`2[[System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.String, mscorlib, Version=4.0.0.0,文化=中性,PublicKeyToken=b77a5c561934e089]]'。此上下文仅支持原始类型或枚举类型。
和班级
实施为KeyValueDataObject<Guid,String>
c# - 如何让导航属性上的选择在 Linq To Entities 中返回一个数组
我有以下查询可以很好地编译
但以运行时异常结束
LINQ to Entities 无法识别方法 'System.Guid[] ToArrayGuid' 方法,并且此方法无法转换为存储表达式。
这是 DataObject 类
我的问题是:如何Guid[]
通过从实体的导航属性中选择来返回