Tag: entity framework

EF 5 + SQL Server CE 4:如何为数据库文件指定自定义位置?

我正在开发一个需要一个小型本地数据库的客户端系统。 我想避免安装SQL Server Express,并决定使用SQL Server 4。 我使用Entity Framework 5进行数据访问,并创建了自定义上下文。 在开发中一切正常,我可以使用app.config来设置特定的文件位置或动态Data Source=|DataDirectory|\MyDatabase.sdf 。 但在部署时,我希望数据库位于users documents文件夹中: \My Documents\ApplicationName\MyDatabase.sdf 我怎样才能做到这一点? 我只需要能够在代码中设置自定义连接字符串! 这是我到目前为止所尝试的: private MyApplicationDataContext(string connectionString) : base(connectionString) { } public static MyApplicationDataContext CreateInstance() { var directory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); var path = Path.Combine(directory, @”ApplicationName\MyDatabase.sdf”); //var connectionString = string.Format(“provider=System.Data.SqlServerCe.4.0;provider connection string=\”Data Source={0}\””, path); var connectionString = string.Format(“Data Source={0}”, path); return […]

在LINQ-to-Entities中键入成员支持?

我有一个使用Entity Framework模型的MVC3项目,我在其中标记了这样一个类: public partial class Product { public bool IsShipped { get { /* do stuff */ } } } 我想在LINQ表达式中使用它: db.Products.Where(x => x.IsShipped).Select(…); 但是,我收到以下错误: 用户代码未处理System.NotSupportedException消息= LINQ to Entities中不支持指定的类型成员’IsShipped’。 仅支持初始化程序,实体成员和实体导航属性。 来源= System.Data.Entity的 我用谷歌搜索,但没有找到任何关于这种用法的确切的尝试: public partial class Product { public bool IsShipped() { /* do stuff */ } } db.Products.Where(x => x.IsShipped()).Select(…); 但后来我得到: System.NotSupportedException未由用户代码处理Message = LINQ […]

在Entity Framework Core中包含集合

例如,我有这些实体: public class Book { [Key] public string BookId { get; set; } public List Pages { get; set; } public string Text { get; set; } } public class BookPage { [Key] public string BookPageId { get; set; } public PageTitle PageTitle { get; set; } public int Number { get; set; } } […]

如何根据rowversion / timestamp值查询Code First实体?

我遇到过一个案例,其中与LINQ to SQL相当不错的东西似乎对Entity Framework来说非常迟钝(或者可能是不可能的)。 具体来说,我有一个包含rowversion属性的实体(用于版本控制和并发控制)。 就像是: public class Foo { [Key] [MaxLength(50)] public string FooId { get; set; } 1541535334 [ConcurrencyCheck] public byte[] Version { get; set; } } 我希望能够将实体作为输入,并找到最近更新的所有其他实体。 就像是: Foo lastFoo = GetSomeFoo(); var recent = MyContext.Foos.Where(f => f.Version > lastFoo.Version); 现在,在数据库中这将起作用:两个rowversion值可以相互比较而没有任何问题。 在使用LINQ to SQL之前我做了类似的事情,它将rowversion映射到System.Data.Linq.Binary ,可以进行比较。 (至少在表达式树可以映射回数据库的程度上。) 但在Code First中,属性的类型必须是byte[] 。 并且两个数组无法与常规比较运算符进行比较。 有没有其他方法来编写LINQ to […]

entity framework按日期选择每个组中的一个

我有一个这样的表(表名:post): +—-+————————–+——-+————+ | id | content | type | date | +—-+————————–+——-+————+ | 0 | Some text | TypeA | 2013-04-01 | | 1 | Some older text | TypeA | 2012-03-01 | | 2 | Some even older texttext | TypeA | 2011-01-01 | | 3 | A dog | TypeB | 2013-04-01 | […]

LINQ To实体包括+ Where方法

我有NxN表,想象一下: 用户(id,…)地址(id,…) UserAddresses包含用户和地址的FK。 据我所知,entity framework用户创建的实体包含UserAddresses的集合。 地址包含UserAddresses的集合,特定的UserAddress包含对User和一个Address的一次重新发送。 现在我想通过linq进行下一个查询。 对于特定用户标识,仅获取已启用标记设置为true的userAddresses。 对于特定用户标识,userAddresses可以包含多个条目,但只为此特定用户设置了一个条目。 我能做的查询是: context.User.Include( x => x.UserAddresses ) .Include( x => x.UserAddresses.Select(y => y.Address) ) .Single( x => x.id == USER_ID ) 但我真正想要的是不为该用户加载所有UserAddresses …只包含启用的那个,设置为TRUE! 有人可以帮我做这个查询吗?

使EF在App_Data文件夹中使用本地数据库

我在使用Entity Framework的所有项目中使用POCO方法。 这一切都很好但我有一个问题:它在我的SQL Express上创建数据库,而不是我希望它将我的数据库存储在App_Data文件夹中的* .mdf文件中。

Force Entity Framework使用SQL参数化来更好地重用SQL proc缓存

entity framework似乎总是在生成的SQL中使用常量来提供给Skip()和Take() 。 在下面的简化示例中: int x = 10; int y = 10; var stuff = context.Users .OrderBy(u => u.Id) .Skip(x) .Take(y) .Select(u => u.Id) .ToList(); x = 20; var stuff2 = context.Users .OrderBy(u => u.Id) .Skip(x) .Take(y) .Select(u => u.Id) .ToList(); 上面的代码生成以下SQL查询: SELECT TOP (10) [Extent1].[Id] AS [Id] FROM ( SELECT [Extent1].[Id] AS [Id], row_number() […]

如何在LINQ-to-Entities查询中使用自定义属性?

我有一个类Post ,它是一个Entity Framework模型。 它包含这样的属性: public bool Showable { get { return this.Public && this.PublishedDate > DateTime.now } } 我可以在这样的查询中使用它: from p in db.Posts where p.Showable select p; 但是当我有一个使用它的属性时,就像这样 public IEnumerable ShowablePosts { get { return from p in db.Posts where p.Showable select p; } } 然后我做不到: from p in ShowablePosts where p.Id > 42 select […]

entity frameworkexception:无效的对象名称

我正在尝试使用Code First方法创建数据库。 当我运行以下代码时,我收到以下exception。 我定义的字段有什么问题吗? 我们怎样才能克服这一点? 例外 : 更新条目时发生错误。 有关详细信息,请参阅内部exception 内在例外 : “无效的对象名称’dbo.Dinners’。 注意 :我在数据库中没有这样的表(Dinners)。 该代码应该创建表。 我只是提供连接字符串来识别EF Code First中提到的服务器:无法连接到SQL Server 。 我应该更改连接字符串吗? 连接字符串: string connectionstring =“Data Source = .; Initial Catalog = LibraryReservationSystem; Integrated Security = True; Connect Timeout = 30”; LibraryReservationSystem数据库已经是现有数据库。 它没有桌子。 我期待EF创建表格。 我从一个正在运行的LINQ 2 SQL应用程序复制的连接字符串。 我是否需要对其进行任何更改才能提供给EF? UPDATE 当我包含以下代码时,exception发生了变化。 现在它说 – “无效的对象名称’dbo.Dinner’。”。 它现在抱怨餐桌; 不是晚餐表。 protected […]