我一直在使用“使用”block进行编码,但我想知道我是否可以从以下返回一个IQueryable而无需在我访问它之前处理该对象。publicIQueryableGetContacts(stringclientID){using(dbDataContextdb=newdbDataContext()){varcontacts=from_contactsindb.Contactswhere_contacts.ClientID==clientIDorderby_contacts.LastNameascendingselect_contacts;returncontacts;}}我是简单地删除“u
我希望我了解基本的工作流程。首先我创建一个模型,然后我生成一个初始迁移,然后我从中生成一个SQL,好的。我更新了模型,我从中创建了一个新的迁移,并从中创建了一个新的SQL,好的。我假设这是一个单向的工作流程是否正确?如果我以错误的方式更改了迁移类,它将永远不会反射(reflect)在我的模型中,并且如果数据库架构不是它应该的样子,EF永远不会注意到,我只会得到奇怪的异常,对吧?如何确保在修改迁移类时不会导致不一致?我假设我只能做两件事:首先,添加EF不关心的新数据库对象,其次,以最终具有相同架构的方式更改EF生成的迁移代码(例如,如果EF生成一个dropcolumn和addcolumn
我的组织需要共享数据库、共享架构Multi-Tenancy数据库。我们将根据TenantId进行查询。我们将拥有很少的租户(少于10个),并且所有租户都将共享相同的数据库模式,不支持特定于租户的更改或功能。租户元数据将存储在内存中,而不是数据库(静态成员)中。这意味着所有实体现在都需要一个TenantId,并且DbContext需要知道默认情况下对此进行过滤。TenantId可能由header值或原始域标识,除非有更可取的方法。我已经看到各种利用拦截器的示例,但还没有看到关于TenantId实现的明确示例。我们需要解决的问题:我们如何修改当前架构以支持此功能(我认为很简单,只需添加Te
声明EntityFramework上下文的最佳实践是什么function(){DBContextcontext=newDBContext();//Entitycodereturn;}或function(){using(DBContextcontext=newDBContext()){//Entitycode}}我们需要在EntityFrameWork中使用using吗?如果是,我的第二个问题在数据访问层中执行EF并将结果存储在IEnumerable中使用我的DLfunction(){IEnumerablesomething=null;using(DBContextcontext=new
MockdbContext;[TestFixtureSetUp]publicvoidSetupDbContext(){dbContext=newMock();dbContext.Setup(c=>c.SaveChanges()).Verifiable();dbContext.Setup(c=>c.SaveChangesAsync()).Verifiable();dbContext.Setup(c=>c.Customers.Add(It.IsAny())).Returns(It.IsAny()).Verifiable();}[Test]publicasyncTaskAddCustomer
有时在使用EntityFrameworkCodeFirst时,默认约定不会创建您想要的数据库类型。例如,默认情况下System.DateTime类型的属性会创建DateTime类型的数据库列。如果你想让它有一个datetime2类型(没有时区和夏令时问题的DateTime类型)怎么办?可以使用DataTypeAtrribute通过数据注释指定所需的数据库类型。DataTypeAttribute的build者之一接受参数DataTypeEnumeration.所以可以指定如下内容:[DataType(DataType.DateTime)]publicDateTimeDateOfBirth
我已经阅读了一些EntityFramework6的教程...基础很简单。using(varcontext=newMyContext()){Useru=context.Users.Find(1);}但是如何在用户的“DbSet”上使用“Where”或其他东西呢?publicclassMyContext:DbContext{publicMyContext():base("name=MyContext"){//this.Database.Log=Console.Write;}publicvirtualDbSetUsers{get;set;}}用户[Table("User")]publiccl
关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭9年前。Improvethisquestion我目前正在做一个ASP.NETMVC5项目,我正在尝试完善该项目的架构;让人们在未来尽可能地干净和容易地使用它。对于初学者,我已将我的EntityFramework模型(包括IdentityUser和AccountViewModel)移动到同一解决方案中的类库项目中。这是目前主要的MVC项目所引用的。但是,我现在正在考虑创建一个新的数据访问层项目,该项目将包含DbContext(或DbCo
我正在启动一个新应用程序,该应用程序必须使用现有数据库,该数据库使用一些在.net中非常烦人的命名约定(表名以指定表的业务域的几个三元组开头,列名以表开头八卦,三卦都是大写的,用下划线等分隔,)。我想做的是编写一个简单的重命名规则(这就像找到最后一个下划线并获取后面的所有内容一样简单)并将其应用到EntityFramework中。我真的不想在编辑器中一个一个地编辑名字,尤其是因为数据库可能会改变,我不想重复多次。我正在使用DatabaseFirst(因为数据库已经存在并且它是“主数据库”)和EF4.xDbContextGenerator,它开箱即用(尽管类和属性的命名很糟糕)。我编辑了
在使用EntityFramework5.0时,我遇到了一个异常,我创建的第一个实体。请注意,之后创建的每个表都可以正常工作。另外请注意,我已经采取了重新生成数据库和/或重新启动VisualStudioIDE的常规步骤。使用Model-First,我创建了一个名为Contacts的普通表,定义为然后我尝试运行以下代码(来自ASP.NET页面的Page_Load)varcontact=newDataContext.Contact{Name=aName};context.Contacts.Add(contact);context.SaveChanges();(aName!=null)异常(e