我想在我的entity framework模型中导入SQL Server的CONTAINS()函数,以便我可以在我的LINQ查询中使用它。 我已经添加到我的EDM: <Function Name="FullTextSearch" ReturnType="Edm.Boolean"> <Parameter Name="Filter" Type="Edm.String" /> <DefiningExpression> CONTAINS(*, Filter) </DefiningExpression> </Function> 添加创build我的方法存根: [EdmFunction("MyModelNamespace", "FullTextSearch")] public static bool FullTextSearch(string filter) { throw new NotSupportedException("This function is only for L2E query."); } 我试图调用这样的function: from product in Products where MyModel.FullTextSearch("FORMSOF(INFLECTIONAL, robe)") select product 引发以下exception: The query syntax is not valid. Near term '*' […]
我仍然对仓库模式有一些困惑。 我想要使用这种模式的主要原因是为了避免从域中调用EF 4.1特定的数据访问操作。 我宁愿从IRepository接口调用通用的CRUD操作。 这将使testing更容易,如果将来我必须更改数据访问框架,我将能够在不重构大量代码的情况下进行testing。 这是我的情况的一个例子: 我在数据库中有3个表: Group , Person和GroupPersonMap 。 GroupPersonMap是一个链接表,只包含Group和Person主键。 我使用VS 2010devise器创build了3个表格的EF模型。 EF足够聪明地假设GroupPersonMap是一个链接表,所以它不会在devise器中显示它。 我想使用现有的域对象而不是EF生成的类,所以我closures了模型的代码生成。 我现有的类与EF模型匹配如下: public class Group { public int GroupId { get; set; } public string Name { get; set; } public virtual ICollection<Person> People { get; set; } } public class Person { public int PersonId {get; set; } public […]
在使用EF代码的时候,我会在不同的时间给出下面的错误: 实体typesSomeType不是当前上下文模型的一部分。 这个错误的可能原因是什么?
我想知道什么是用DBContext实现事务的最好方法。 尤其是, 如果我更改多个实体, DbContext.SaveChanges实现事务内部吗? 如果我想多次调用DbContext.SaveChanges (同一个contxet /不同的contxets),如何实现事务?
类似于检查entity framework中是否存在对象的最佳方法? 我正在寻找一种通用的方式来检查DbSet的实体。 像这样的东西,这是行不通的: private DbContext DbContext { get; set; } private DbSet<T> DbSet { get; set; } public Boolean Exists(T entity) { return ((from item in this.DbSet where item == entity select item).Count() > 0); } where item == entity在LINQ to SQL中的工作行,但显然不是LINQ to Entities。 由于实体可能具有不同的密钥,我不能让它们全部从具有已知密钥的通用摘要inheritance来进行比较。 我可以做到这一点,但我担心捕获作为validation过程的exception的性能这不起作用,因为只要实体分离,无法获得OriginalValues属性: public Boolean Exists(T entity) { try { var […]
有了这个简单的代码,我得到了“不能删除数据库”test_db“,因为它正在使用”(CleanUp方法),因为我运行它。 [TestFixture] public class ClientRepositoryTest { private const string CONNECTION_STRING = "Data Source=.;Initial Catalog=test_db;Trusted_Connection=True"; private DataContext _dataCntx; [SetUp] public void Init() { Database.SetInitializer(new DropCreateDatabaseAlways<DataContext>()); _dataCntx = new DataContext(CONNECTION_STRING); _dataCntx.Database.Initialize(true); } [TearDown] public void CleanUp() { _dataCntx.Dispose(); Database.Delete(CONNECTION_STRING); } } DataContext有一个像这样的属性 public DbSet<Client> Clients { get; set; } 如何强制我的代码删除数据库? 谢谢
我正在使用entity framework代码优先方法来创build我的数据库表。 下面的代码在数据库中创build一个DATETIME列,但是我想创build一个DATE列。 [DataType(DataType.Date)] [DisplayFormatAttribute(ApplyFormatInEditMode = true, DataFormatString = "{0:d}")] public DateTime ReportDate { get; set; } 如何在创build表格时创buildDATEtypes的列?
只是想知道更多关于RelatedTo属性,我发现它已被EF 4.1 RC中的ForeignKey和InverseProperty属性所取代。 有没有人知道这个属性变得有用的场景的任何有用的资源? 我应该在导航属性上使用这个属性吗? 例: public class Book { public int ID {get; set;} public string Title {get; set;} [ForeignKey("FK_AuthorID")] public Author Author {get; set;} } public class Author { public int ID {get; set;} public string Name {get; set;} // Should I use InverseProperty on the following property? public virtual ICollection<Book> Books {get; […]
想知道是否需要使用Genericrepository模式和UnitOfWork模拟知识库。我正在使用MOQ.Is现在是多余的,因为我已经注意到,EF 4.1有IDBSet。 我还没有想出如何写通用的IDBSet通用。如果你有一个例子,你实现IDBSet你可以显示给我? 有什么build议么?
我想知道是否DbContext类是线程安全的,我假设它不是,因为我目前正在执行DbContext线程访问我的应用程序中的DbContext ,我得到了一大堆的lockingexception和其他东西看起来像他们可能是线程有关。 直到最近我没有得到任何错误…但直到最近我没有访问线程中的DbContext 。 如果我是对的,人们会提出什么样的解决scheme?