Tag: entity framework

各种数据库的entity framework提供者列表

那里有哪些供应商和您使用它们的经验 我想知道所有可能的原生.NET框架entity framework提供者,以及它们的缺陷,以及与默认的LINQ2Entities (来自MS for MS SQL)相比的局限性。 如果有更多的相同的数据库更好。 告诉我,我将用这个列表更新这个post。 随意添加额外的提供者直接到这个职位或提供一个答案和其他人(包括我)将其添加到列表中。 entity framework1 Microsoft SQL Server Standard / Enterprise / Express Linq 2实体 – Microsoft SQL Server连接器 DataDirect ADO.NET数据提供程序 Microsoft SQL Server CE(精简版) 任何供应商? MySQL的 MySQL连接器 (从版本6.0开始) – 我已经阅读了在同一个expression式树中使用Skip() , Take()和Sort()的问题 – 每个人都欢迎input他们的经验/知识。 注意 :Visual Studio Express Edition中不支持MySQL Connector / .NET Visual Studio集成,这意味着您将无法在数据库浏览器窗口中查看MySQL数据库,也无法通过Visual Studio向导对话框添加MySQL数据源。 有些用户可能会发现这限制了他们在Visual Studio […]

减less知识库以聚合根

我目前有一个数据库中的每个表的存储库,并希望进一步调整自己与DDD通过减less它们只聚合根。 假设我有以下表格, User和Phone 。 每个用户可能有一个或多个电话。 没有聚合根的概念,我可能会这样做: //assuming I have the userId in session for example and I want to update a phone number List<Phone> phones = PhoneRepository.GetPhoneNumberByUserId(userId); phones[0].Number = “911”; PhoneRepository.Update(phones[0]); 聚合根的概念在纸上比在实践中更容易理解。 我永远不会有不属于用户的电话号码,那么废除PhoneRepository并将与Phone相关的方法合并到UserRepository中是否合理呢? 假设答案是肯定的,我将重写之前的代码示例。 我允许在UserRepository上有返回电话号码的方法吗? 或者它应该总是返回一个用户的引用,然后通过用户遍历关系来获得电话号码: List<Phone> phones = UserRepository.GetPhoneNumbers(userId); // Or User user = UserRepository.GetUserWithPhoneNumbers(userId); //this method will join to Phone 不pipe我以哪种方式获得手机,假设我修改了其中一个,我该如何去更新它们? 我有限的理解是根源下的对象应该通过根来更新,这将引导我select下面的select#1。 尽pipeEntity […]

如何使entity framework数据上下文只读

我需要向第三方插件公开一个entity framework数据上下文。 目的是允许这些插件仅提取数据,而不是让他们发出插入,更新或删除或任何其他数据库修改命令。 因此,我怎样才能使数据上下文或实体只读。

实体types<type>不是当前上下文的模型的一部分

我正在进入entity framework,但我不确定是否缺less代码优先方法中的关键点。 我正在使用基于https://genericunitofworkandrepositories.codeplex.com/代码的通用存储库模式,并创build了我的实体。 但是,当我尝试访问或修改实体时遇到以下情况: System.InvalidOperationException:实体typesEstate不是当前上下文的模型的一部分。 它发生在我试图从我的存储库访问它时: public virtual void Insert(TEntity entity) { ((IObjectState)entity).ObjectState = ObjectState.Added; _dbSet.Attach(entity); // <– The error occurs here _context.SyncObjectState(entity); } 数据库(./SQLEXPRESS)创build得很好,但实体(表)只是在启动时没有创build。 我想知道如果我需要明确设置实体的映射? 英孚不能通过它自己? 我的实体是: public class Estate : EntityBase { public int EstateId { get; set; } public string Name { get; set; } } 我的背景是这样的: public partial class DimensionWebDbContext : […]

如何在没有加载内容的情况下在EntityFramework中COUNT行?

我试图确定如何使用EntityFramework来统计表上的匹配行。 问题是每行可能有很多兆字节的数据(在二进制字段中)。 当然,SQL会是这样的: SELECT COUNT(*) FROM [MyTable] WHERE [fkID] = '1'; 我可以加载所有的行, 然后find计数: var owner = context.MyContainer.Where(t => t.ID == '1'); owner.MyTable.Load(); var count = owner.MyTable.Count(); 但是这是非常低效的。 有一个更简单的方法吗? 编辑:谢谢,所有。 我已经从一个私人连接移动数据库,所以我可以运行分析; 这有助于但却导致我没有想到的混乱。 而且我的真实数据会更深一些,我会用卡车运载物品的 货盘 – 而且我不想卡车离开,除非至less有一个物品在里面。 我的尝试如下所示。 我没有得到的部分是CASE_2不能访问数据库服务器(MSSQL)。 var truck = context.Truck.FirstOrDefault(t => (t.ID == truckID)); if (truck == null) return "Invalid Truck ID: " + […]

不使用存储库模式,使用ORM原样(EF)

我总是使用Repository模式,但对于我最近的项目,我想看看能否完善它的使用和“工作单元”的实现。 我开始挖掘越多,就开始问自己这个问题: “我真的需要它吗? 现在,这一切都从Stackoverflow上的一些评论开始,在他的博客上跟踪Ayende Rahien的post,其中有2个具体的, 存储库是最新单 问-ayende生活,而无需储存库,是-他们价值-生活 这可能会被永远讨论,并取决于不同的应用。 我想知道什么, 这种方法是否适合entity framework项目? 使用这种方法是业务逻辑仍然在一个服务层,或扩展方法(如下所述,我知道,扩展方法是使用NHib会话)? 这很容易使用扩展方法完成。 干净,简单,可重复使用。 public static IEnumerable GetAll( this ISession instance, Expression<Func<T, bool>> where) where T : class { return instance.QueryOver().Where(where).List(); } 使用这种方法和Ninject作为DI,我需要使Context成为一个接口,并在我的控制器注入?

术语“更新数据库”不被识别为cmdlet的名称

我正在使用EF5 beta1,而我之前可以运行“更新数据库”。 现在我closures了Visual Studio,我无法运行它。 我得到以下错误: 术语“更新数据库”不被识别为cmdlet,函数,脚本文件或可操作程序的名称。 检查名称的拼写,或者如果包含path,请validationpath是否正确,然后重试。 在行:1 char:16 +更新数据库<<<< -verbose + CategoryInfo:ObjectNotFound:(更新数据库:string)[],CommandNotFoundException + FullyQualifiedErrorId:CommandNotFoundException 我试图重新安装EF5b1,虽然成功(已安装),“更新数据库”仍然无法正常工作。 谁能帮助吗?

撤消entity framework实体中的更改

这可能是一个微不足道的问题,但是:由于ADO.NETentity framework自动跟踪更改(在生成的实体中)并因此保留原始值,我如何回滚对实体对象所做的更改? 我有一个允许用户在网格视图中编辑一组“客户”实体的表单。 现在我有两个button“接受”和“恢复”:如果单击“接受”,我调用Context.SaveChanges()和更改的对象被写回数据库。 如果单击“还原”,我希望所有对象都能获得其原始属性值。 那代码是什么? 谢谢

软件包pipe理器控制台启用 – 迁移仅在特定VS项目中使用CommandNotFoundException

我试图在一个新的项目中运行命令“Enable-Migrations”,并得到以下消息: PM> Enable-Migrations The term 'Enable-Migrations' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verif y that the path is correct and try again. At line:1 char:18 + Enable-Migrations <<<< + CategoryInfo : ObjectNotFound: (Enable-Migrations:String) [], […]

我应该如何编辑entity framework连接string?

我最近不得不编辑我的app.config文件来更改entity framework数据模型( .edmx文件)的连接string。 但我想知道: 有没有办法编辑EF连接string使用devise器? 原始连接string由“实体数据模型”向导自动生成。 连接string不能更改 – 在.edmxdevise器的属性窗口中保持禁用状态。 我喜欢避免手动编辑XML(在app.config中),所以我想知道是否有办法返回到原始向导屏幕来更改连接string并让工具编辑app.config文件为了我。