草庐IT

c# - EF5 Code First - 使用迁移更改列类型

我是EF5CodeFirst的新手,在开始工作项目之前我正在修改概念验证。我最初创建了一个看起来像这样的模型publicclassPerson{publicintId{get;set;}publicstringFirstName{get;set;}publicstringSurname{get;set;}publicstringLocation{get;set;}}然后我使用放在顶部的一个小MVC应用程序添加了一些记录。现在我想将Location列更改为枚举,例如:publicclassPerson{publicintId{get;set;}publicstringFirstName{

c# - EF 中的工作单元模式是什么?

我正在学习EF并看过很多示例,在学习过程中我开始了解使用存储库和工作单元模式。我知道为什么要使用存储库,但我不了解工作单元的真正含义。不理解会使DAL理解变得困难。请指导我。谢谢 最佳答案 DataContext或ObjectContext是工作单元。因此,您的DAL将保存、删除和检索对象,而您的DataContext/ObjectContext将跟踪您的对象、管理事务并应用更改。这是一个示例只是为了说明解决方案的想法。using(varcontext=newObjectContext()){//UnitofWorkvarrepo=

c# - EF5 启动项目 :Error Running transformation: Please overwrite the replacement token '$edmxInputFile$'

我正在使用.Net4.5在VS2012中创建一个控制台项目。之后,我向项目“添加”、“新项目”,然后选择“EF5.xDbContextGenerator”。然后,几秒钟后,以下错误消息出现在“错误列表”选项卡中:Error1Runningtransformation:Pleaseoverwritethereplacementtoken'$edmxInputFile$'withtheactualnameofthe.edmxfileyouwouldliketogeneratefrom.C:\Projects\Tests\ConsoleAppEF5\ConsoleAppEF5\Model1.

c# - 导航属性应该是虚拟的 - 在 ef 核心中不需要吗?

我记得在EFnavigationpropertyshouldbevirtual:publicclassBlog{publicintBlogId{get;set;}publicstringName{get;set;}publicstringUrl{get;set;}publicstringTags{get;set;}publicvirtualICollectionPosts{get;set;}}但我看EFCore不要将其视为虚拟:publicclassStudent{publicintID{get;set;}publicstringLastName{get;set;}publicstri

c# - 数据库优先方法的 EF 迁移?

我们在EntityFramework中使用数据库优先方法。我们有几个客户,当我们部署新产品版本时,我们现在使用SQLCompare等工具“手动”应用数据库架构更改。EF迁移是否可以帮助自动将更改应用到客户数据库? 最佳答案 据我所知,EFMigrations是一款针对CodeFirst的产品,不支持DatabaseFirst操作。CodeFirst假定您永远不会手动对数据库进行任何更改。对数据库的所有更改都将通过代码优先迁移。 关于c#-数据库优先方法的EF迁移?,我们在StackOve

c# - EF : Include with where clause

这个问题在这里已经有了答案:FilteringonIncludeinEFCore(10个答案)关闭去年。社区在去年审查了是否重新打开这个问题并让它关闭:原始关闭原因未解决正如标题所暗示的那样,我正在寻找一种结合包含的where子句的方法。这是我的情况:我负责支持一个充满代码味道的大型应用程序。更改太多代码会导致到处都是错误,因此我正在寻找最安全的解决方案。假设我有一个对象Bus和一个对象People(Bus有一个导航PropCollectionofPeople)。在我的查询中,我需要选择所有只有醒着的乘客的公共(public)汽车。这是一个简单的虚拟示例在当前代码中:varbusses

c# - EF 6 和 SQLite 1.0.96.0 的“未找到 Entity Framework 提供程序”

我意识到关于这个主题已经有几个类似的问题,但其中许多来自旧版本的SQLite,据我所知,它并不完全支持EF6。我已经尝试了来自这些线程的无数建议,但要么做错了什么,要么必须改变某些东西。我正在使用VS2013,目标为.NET4.5.1,并安装了来自system.data.sqlite.orgdownloadpage的sqlite-netFx451-setup-bundle-x86-2013-1.0.96.0.exe包。,以及来自NuGet管理器(安装EF6)的System.Data.SQLiteEF6包。下面是我当前的App.config文件(除了我尝试将Version、Culture

c# - EF 6.1 唯一可空索引

在使用CodeFirst的EF6.1中,您可以使用实体中的属性或按照以下方式使用流畅的API创建索引:Property(x=>x.PropertyName).IsOptional().HasMaxLength(450).HasColumnAnnotation("Index",newIndexAnnotation(newIndexAttribute("IX_IndexName"){IsUnique=true,}));有没有什么方法可以像在SQLServer中一样使用WHEREPropertyNameISNOTNULL脚手架(参见:https://stackoverflow.com/a/7

c# - 为什么 EF 生成带有不必要的空值检查的 SQL 查询?

我遇到了EF在搜索字符串字段时创建糟糕查询的问题。它以懒惰的程序员的风格生成了一个查询,以包含强制扫描整个索引的空检查。考虑以下查询。查询1varp1="x";varr1=ctx.Set().FirstOrDefault(subject=>p1.Equals(subject.StringField));查询2conststringp2="x";varr2=ctx.Set().FirstOrDefault(subject=>p2.Equals(subject.StringField));查询1产生WHERE(('x'=[Extent2].[StringField])OR(('x'ISNU

c# - 如何使用 ASP.net EF Codefirst 数据注释将 SQL Server 中的列设置为 varchar(max)?

我一直在网上搜索,试图找出正确的语法,让EntityFrameworkCodeFirst创建我的表,其中有一列:varchar(max)。这是我的。默认情况下,这会创建varchar(128)。如何创建varchar(max)?我试过[MaxLength]但没有成功。如有任何帮助,我们将不胜感激。谢谢![Column(TypeName="varchar")]publicstringMediaDesc{get;set;} 最佳答案 [Column(TypeName="varchar(MAX)")]令人惊讶的是,最明显的解决方案有效。[