我在MSDN上看到了以下评论(和):
“请注意,通常应避免独立的关联,因为
N层和并发性变得更加困难。”
我是EF4新手,正在构建一个n层web应用程序。这听起来像是一个重要的陷阱。有人能给我解释一下这意味着什么吗?如果你是EF新手,从EF4开始,简单的答案是忽略这一点-你几乎肯定会使用外键关联,而不是独立关联
外键关联由数据库中的外键关系支持,该关系在概念模型中有明确描述。这种联系对EF4来说是新的,我知道这是一种让步,因为人们与独立的协会之间存在一些问题
严格地说,如果您想将存储模式和概念模
当Entity Framework为与多对多关系表相连的两个数据库表(比如Table1和Table2)生成ObjectContext时,它不会为外部参照表创建对象,而是选择关系两端的集合属性。因此,在表1中有EntityCollection表2,在表2中有EntityCollection表1。在大多数情况下,这真的很好
但是,在这个场景中,我有一个整数列表,这些整数表示应该在Table1.Table2s集合中的Table2行的数据库ID
我看不到任何方法可以仅仅使用实体键来设置集合,所以我只能在
在我的数据库中,我有一个公司。该公司有分支机构,其地址为。该公司还有账户,这些账户有返回地址,这些账户也有地址
我想在一个查询中加载所有这些数据,例如:
from c in context.Company
.Include("Branches").Include("Address")
.Include("Accounts").Include("ReturnAddresses").Include("Address")
where c.CompanyI
我首先使用代码构建web应用程序。
我有两个主要实体“产品和类别”。DbContext类和DatabaseInitializer类如下所示。
==================================================
namespace WingtipToys.Models
{
public class Category
{
[ScaffoldColumn(false)]
public int CategoryID { get; set; }
嗨,我被赋予了使用EntityFramework4创建一个N-Teir网站的任务,我遇到了一些困难,据我所知,很可能是困难重重
到目前为止,我的计划是有这些层
网站(应用层),
我称之为Name.Framework(BLL),
名称.数据(DAL),
名称.实体(包含在网站/bll中使用的POCO类和其他结构类,
Name.Common(实用程序类)
我曾尝试使用repository类,但我正在努力使事情按照我认为的方式进行
如果我想使用.include(),这是在我的存储库中还是由业务层负责?
我已经用默认的EF方式映射了我的类,并且我所有的FK都是EntityCollection,所以例如Bike.Wheels就是EntityCollection
如何使用车轮
我要取回第一和第二个轮子
我想绕着轮子转
我想把所有的轮子都装上
我无法使用get/select/[]
我遗漏了什么吗?嗯,有些操作非常简单,有些操作有点笨拙,所以您可能需要重新设计一些方法来使用简单的方法
要在所有轮子上循环,只需使用foreach语句:
using(BikeEntities ctx = new Bike
我正在使用实体框架v4的POCO支持。我想获取映射到该实体的POCO类的类型。例如,您可以从ObjectStateManager获取ObjectStateEntry。然后,该条目具有对实体的引用。实体的类型为object,因此在您强制转换它之前它是无用的
如果您知道实体的类型在编译时可能是什么,但如果您想在运行时使用它,那么这很好。实体框架是否在任何位置存储该实体的CLR类型。是的,您可以执行以下操作:
var mappedType = MyObjectContext.GetObjectType
使用.NET4.0中的实体框架,如何为下面的对象设置实体
我有一个项目,人们可以评论,然后人们可以评论评论等等
例:
项目
-评论
--评论
--评论
---评论
-评论
-评论
--评论
我在sql中的当前表结构:
评论
ID(int)
ParentCommentID(int)
ProductID(字符串)
标题
正文
谢谢一个好主意是查看
它们对post/comments有类似的设置,因此您可以看到它们是如何设置模式的。Hanselman也有一篇关于OData服务的博客文章,所以你可以查看他
我使用的是EF4提供的模型优先方法。我有两个实体:用户和功能。正如您所想象的,用户拥有一组功能。在对该关联进行建模并生成SQL之后,结果是表功能对用户具有FK。我想要的是让EF生成另一个表UserFeatures来存储关系。有没有一种方法可以在不建模UserFeatures实体的情况下实现这一点?EF将仅在您想要建模M:N关系时创建这样的表。没有理由为1:N创建这样的表,除非您在designer中以某种方式对其进行建模,否则EF不会生成该表。EF将仅在您要为M:N关系建模时创建这样的表。没有理由
嗨
在检索实体的数据时,我需要获取一些额外的信息。但是,额外的属性在不同的表中。我创建了一个具有这些额外属性的分部类。
如何让EF填充额外的属性
谢谢您必须手动填充它们。一旦属性不是映射实体的一部分(它们可能不属于映射实体),EF就不会对它们做任何事情,因为它不知道它们
另一种方法是不使用原始实体,而是使用一些自定义Linq to entities查询填充非映射或匿名类型。最后一个选项是使用实体模型中定义的特殊只读实体,并在EDMX文件中手动创建。在Ladislav的文章之后。最简单的方法?创建
我需要得到一个实体的前一个值
我的要求是;我在编辑页面中有一些输入字段
1用户可以在此处输入一些值,然后按保存按钮,此时用户应该可以保存它
2用户可以在此处输入一些值,然后按取消按钮。此时,在用户开始编辑页面之前,页面应重新加载任何值
我的问题是,实体框架能帮助我们获得对象的先前值吗?
自我跟踪与此相关吗?您想做的是:
myContext.Refresh(RefreshMode.StoreWins, myObject);
这将要求上下文重新加载实体,删除对对象的任何更改并替换数据存储中的属性值
EF 4.2代码是否首先支持枚举类型?如果是,你如何使用它?使用Nuget EntityFramework包时,以下内容不会为enum属性创建字段
public class FooContext : DbContext
{
public IDbSet<Foo> Foos { get; set; }
}
public class Foo
{
public int Id { get; set; }
public string Name { get; set; }
这是我在EF4中的配置类
我已经定义了IList类型的“MyGroups”属性
“MyGroup”类没有“EffectiveDateFrom”和“EffectiveDateTo”属性
引发异常后的运行时:
System.Data.Edm.EdmAssociationConstraint:关系约束中从属角色和主要角色中的属性数必须相同
查询:
当父表中使用的所有列在子表中都不可用时,如何在EF4中创建此类映射?您无法创建此类映射,因为它无效。依赖实体中的外键必须包含主体实体中定义的复合主键的所有组
以下表达式在LINQPad中正确运行。
对于EntityFramework,它运行但不排序(没有运行时错误,只有错误的结果)
非常简单的表格:
分数-整数0-300
类型-字符串-其中四个(男-女,游戏和系列)
日期-这里不重要
var scoresTest = from h in HighScores
where h.Date > startDate
orderby h.Type, h.S
我希望实现以下目标:
使用DTO作为参数调用服务。我想知道保存更改的最简单方法,如果DTO包含一个修改过的现有实体(带有更新的父实体)和一个新的相关实体(带有插入的子实体)
提前谢谢
我使用的是EF4 CTP5代码优先的方法,但在让它工作时遇到了麻烦。我有一个名为“Company”的类和一个名为“CompanyTable”的数据库表。我想将Company类映射到CompanyTable表,因此有如下代码:
[Table(Name = "CompanyTable")]
public class Company
{
[Key]
[Column(Name = "CompanyIdNumber", DbType = "int")]
我使用的表达方式如下:
ProductRepository.Query.Include(Function(x) x.ChildProducts.Select(Function(y) y.PriceTiers.Where(Function(z) z.IsActive))).Where(Function(x) x.Categories.Any(Function(y) y.ID = ID))
得到这个错误:
The Include path expression must refer to a na
关于存储库模式和查询对象模式的问题。我使用EF4,并在VS2010中使用ADO.NET POCO实体生成器从数据库模型生成了POCO类。edmx文件和tt文件(POCO类)位于两个不同的项目中
我的存储库是特定于域的,例如DocumentRepository和UserRepository。我的数据库模型与我的域模型的不同之处在于,我实现了映射器,以便将域对象转换为一个或多个数据库表(反之亦然)。一个例子是,我的文档域类被建模为数据库中的3个表(因此也是POCO类)
在这种情况下使用域对象时,您将
我的应用程序中出现了一个奇怪的错误,我无法解决。错误如下
The Member 'Company' in the conceptual model type 'EntityModel.FK_Users_Companies' is not present in the CLR type 'EntityModel.FK_Users_Companies'.
这对我来说很奇怪,当我在谷歌上搜索时,我找不到任何关于这个确切错误的信息
关于如何解决此问题有何建议?此错误表示您的类(CLR类型)与EDMX模
我使用ADO.NET模拟上下文生成器从EDMX文件生成实体类,以便在单元测试中使用它们。但是,在生成实体并尝试构建项目后,出现以下错误:
The type name 'DateTime' does not exist in the type 'MyProject.Models.System'
在代码中,DateTime属性以以下格式声明:
public virtual System.DateTime LastActive
如果我将System.DateTime更改为just DateTime
当我将通用存储库与实体框架一起使用时,我是否需要使用工作单元,因为据我所知,多个存储库之间没有坐标。或者让通用存储库直接在DbContext上工作,因为不需要UOW
哪一种是最佳实践:为每个实体类型使用通用存储库或实现存储库类
我不知道您指的是哪个通用存储库,但下面是我使用通用存储库的经验
通常,EntityFramework不需要工作单元或存储库。EntityFramework完成了这一切
然而,在我的第一个EF项目中,我发现自己创建了一个工厂类,分发并保存所有实体。该类没有完成工作单元的全部
我有一个问题,几天来我一直在努力解决,但我无法找到正确的方法。
我使用的是EF4,我有一个应用程序,我首先使用数据库,它最初创建了ObjectContext,我没有加载DbContext生成器并生成它
问题是,我需要应用程序能够从一些配置文件中获取数据库模式,而不是总是使用“dbo”默认值。
我试图在“OnModelCreating”重载方法中使用“ToTable”方法(因此我可以指定模式),但作为sai,因为我首先使用数据库,所以没有调用该方法
如何配置架构名称?
这可能吗?
我也读过这篇文章
我有一个“UserLogin”表,其中包含以下列:id和userid。假设我想在Gridview中将userid显示为“user”,然后我们用sql编写查询
select userid as user from UserLogin
但我使用的是实体框架。如何在实体框架中解决此问题?通常在GridView控件中为该列指定不同的标题文本
但您可以通过使用在实体框架中实现类似的功能
select new { user = UserLogin.userid, id = UserLogin.id };
在C#中,我使用实体框架和MVC,并拥有:
public class Part
public class FinishedGoodsPart: Part
public int? ProductLineId { get; set; }
public class CompetitorPart : Part
public int? ProductLineId { get; set; }
public class OEPart: Part
public class ProductLi
我有一个现有的数据库,在两个表之间有一个非常简单的单向外键关系。我需要创建带有映射的类,这些映射将与现有数据库一起工作
CREATE TABLE OfflinePackage (
PackageID int,
Name nvarchar(100)
...
CREATE TABLE OfflinePackageDocument (
PackageDocumentID int,
PackageID int, --- FK referen
EF新手,我注意到使用存储库模式可以真正简化事情,也可以让我做一些模拟。到目前为止还不错
我的问题
objectContext的一个典型用法是尽快销毁,见下文
使用(var context=newschoolEntities())
{
上下文。添加到部门(部门);
SaveChanges();
}
使用Repository模式我注意到实际上没有人使用“Using模式”,例如
使用(var repository=newrepository(new MyContext))
{
re
我需要一种方法来跟踪修改后的属性并对其进行审核。
我正在连接到SaveChanges,在那里我可以得到修改过的属性
//Get only Modified Customer entries
var modifiedCustomerOses = context.ObjectStateManager
.GetObjectStateEntries<Customer>(EntityState.Modified)
.ToList();
//仅获取修改的客户条目
我惊讶地发现,当Ninject创建的对象被定义为InRequestScope时,在请求结束时,至少有一个对象没有被处理
以下是我试图处理的对象:
接口:
public interface IDataContext : IDisposable
{
MessengerEntities context { get; set; }
}
MessengerEntities是实体框架对ObjectContext(我的上下文对象)的实现
然后我创建了一个具体的类,如下所示:
public class
我的数据库中有下表
表格问题
问题(i)
应答位为空
问题串
<Property Name="questionlog_id" Type="int" Nullable="false" oreGeneratedPattern="Identity" />
<Property Name="question_id" Type="int" Nullable="false" />
<Property Name="answer" Type=
我正在尝试编写一个动态搜索和chain子句,我在下面有我的类和示例代码
public class Person
{
public int PersonId { get; set; }
//More Fields ..
}
//Link Table
public class PersonAddress
{
public int PersonID { get; set; }
public int AddressID { get; set; }
//More
自从引入版本1以来,实体框架发生了巨大的变化。EF4.1改进了“代码优先”和“流畅”映射,这真是令人印象深刻。但是,我担心EF4.1上的复杂查询实现,因为它强烈依赖于DbContext。实体SQL和LINQtoEntities通过SQL查询不断更改其行为。我觉得我们需要一个强大的查询机制,比如HQL或Criteria来克服这个问题。您认为呢?许多现代.NET ORM都提供IQueryProvider实现(包括NHibernate)。我选择使用POCO T4模板删除对EF的直接依赖,然后对其进行修
从设计器更新EDMX模型以在大型数据库上添加表时,输出窗口中返回错误:
由于以下异常,无法生成模型:'
执行命令定义时出错。看内在
细节例外
传入的表格数据流(TDS)远程过程调用(RPC)
协议流不正确。中提供的参数太多
这是一个RPC请求。最大值为2100。”。正在从加载元数据
数据库花费了00:00:04.51496。生成模型需要花费大量时间
00:00:14.0108568. 由于错误,无法生成模型
以下异常:“执行命令时出错。”
定义。有关详细信息,请参见内部异常
传入的表格数据流(T
我有一个方法,返回一个数据来填充datagridview(以win形式)
我使用EF,我的方法中有内部连接,工作良好且正确
在数据源可以接受之前,我应该返回什么类型的数据
private ??? getData()
{
using(var context =new context())
{
var query = from a in context.Table1
join b in context.Table2 on a.Table1ID equals b
我正在EDM设计器中使用EF4。我有两个表:用户和链接。它们之间的关联是,一个用户可以发布多个(*)链接,而一个链接最多可以有(0..1)个用户(发布链接的用户)或没有(null)
我的目标是,当我删除一个用户时,其所有链接中的FK都设置为null。问题是EF4似乎只支持操作:级联和无
如何使用EF4实现On Delete Set Null规则?EF在处理加载的实体时默认使用此规则。如果将已加载的用户标记为已删除,则所有已加载的链接都将丢失对此用户的引用。对于未加载的实体,必须在数据库中设置此规
我有以下两个类,它们能够在内部跟踪所有更改
public class Agent
{
public int AgentId { get; set; }
public ICollection Roles { get; set; }
public ICollection DeletedCollectionItems { get; set; }
public ICollection NewCollectionItems { get; set; }
Chan
数据库连接指南简单易懂。尽可能晚地打开连接,并尽快将其关闭。这当然是正常的,因为连接池
实体框架上下文的故事是什么?同样的模式适用吗 连接池由您的提供商决定
如果使用构造函数创建ObjectContext,该构造函数采用EntityConnection,则将使用现有连接。否则,它将要求提供商提供一个新的
查看详细信息,但请记住,您的提供商可以做任何它想做的事情
我们有两个列相同的实体,但实体名称不同。我可以使用第一个实体实例创建2个实体吗
我们尝试执行.AddObjectEntity2 name,entityOneinstance,但失败
请说明这是否可行或其他方法
提前感谢由于实体的类型不同,您的添加操作肯定会失败
我认为在实体类型之间需要一个映射器或显式/隐式转换操作符
为了清楚起见,对于对话解决方案,假设您有Entity1和Entity2,并且都有属性、属性、属性_1、属性_2和属性_3。我假设您有默认的代码生成策略,而不是POCO或其他。然后您
我有以下要求
我在EF中有一个表和相应的实体。现在,我的代码将图像插入下表中的DB
PatientChartImages(
PatientChartImageId guid,
PatientChartId guid,
NoOfImages int,
PatientChartImage varBinary(Max)
)
我必须创建一个单独的表并在其中存储图像,而不是PatientChartImages表
PatientChartImagesSourc
如何将新属性添加到将显示名称room的工作区
此属性不能在实体设计器中定义,除非它在数据库中也定义为工作面板表的列。为生成的实体创建分部类并添加自定义特性:
public partial class WorkPanel
{
public string Name
{
get
{
return (Table != null && Table.Room != null) ? Table.Room.Name : nu
我的解决方案是Silverlight,它使用WCF RIA服务SP1和实体框架4
我在加载大数据时遇到问题
我收到了这个错误信息
System.ServiceModel.DomainServices.Client.DomainException:超时已过期。操作完成前已过超时时间,或者服务器没有响应
我认为超时是个问题,所以我尝试了下面的代码。当我没有安装WCF Ria服务“SP1”时,它就工作了。
但自从我安装了“SP1”后,它就不起作用了
ChannelFactory channel=((W
我正在结合EF4.0学习并发性,并且对所使用的锁定模式有疑问
假设我在版本号属性上配置了固定并发模式
现在假设我从数据库上下文中获取一个记录实体并编辑一些属性。当在其上下文上调用SaveChanges时,版本将递增。如果当前数据库上下文版本与原始记录实体的版本匹配,则继续保存,否则EF将抛出OptimisticConcurrencyException
现在,我感兴趣的是:在检查版本之间,总是有一段很短的时间,不管它有多小。因此,理论上,其他人可能只是更新了比较和实际保存之间的记录,因此可能会损坏
我有一个用户表。对于CreatedBy等字段,存在来自其他表的对此表的引用
问题是,当我插入另一个表的一行(比如“x”)时,它试图将新用户插入到用户表中
它应该做的是将CreatedBy作为现有用户插入到表“x”中
使用实体框架4。以前有人遇到过这样的问题吗?您可以将实体与相关实体一起插入,也可以不插入相关实体而插入实体,只引用现有实体。这取决于您编写的代码
例1:
User-User=getuserfromwhere();
使用(var context=new MyContext())
{
订
我试图为我的模型创建一种动态加载程序,在这里我可以指定我需要的属性,它的主要目的是创建一个restapi,它为各个模型提供动态信息,如JSON
API可通过以下方式访问:。
/api/model?id=581D1393-3436-4146-A397-E47CF5419453&fields=foo、bar、baz
为此,我使用了中所述的方法,问题是我需要使用连接在多个表上进行查询,并从不同的表加载数据,据我所知,在这种情况下我无法这样做
现在我对实体SQL使用ObjectQuery方法,在这里我可
在数据库表上有一列类型为char(2)
当我在linq中使用参数时,例如。其中(x=>x.code==code)SQL查询参数被转换为varchar(max),我希望它是char(2),以避免隐式转换。这是因为查询没有以我希望的方式使用数据库的索引
Property(c => c.Code)
.HasColumnType("char")
.IsFixedLength()
.HasMaxLength(2);
代码优先映
我有一个相当深的对象图,并希望急切地加载整个图形
我知道我可以使用.Include()急切地加载特定的导航属性
然而,这看起来很脆弱(如果我添加了导航属性,我还必须添加一个额外的.Include),并且需要(在我的例子中)相当多的.Include()语句
是否有方法指示EF急切地加载整个对象图?您必须手动包含要急切加载的每个导航属性。EF不提供任何内置方式来包含所有
但是,这似乎很脆弱(如果我添加导航属性,我必须
还要添加一个额外的.Include)并需要(在我的例子中)很多
.Include(
使用EF4/w SQL Server 2008
以下代码(针对具有PK的表,定义为Int-IDENTITY(1,1):
分析SQL时的结果是insert语句,随后是对我要插入的表的查找:
SELECT ID FROM Table
WHERE ID = @@ScopeIdentity AND @@RowCount > 0
有没有办法防止EntityFramework检索Identity种子?我的.Net代码中不需要该ID,在高容量的情况下,这似乎是一个浪费的操作
另外,是否有办法告诉EF改
如果我在映射文件中定义了下一步(单元和机器之间的1对多关系):
当我添加新实体Machine.UnitOfMeasurement=null时,为什么DbContext在调用GetValidationErrors时不返回验证问题,以及我可以如何检测它们。若我允许EF尝试更新,它将向用户返回无意义的消息,如外键引用错误,而我可以从DbEntityValidationResult(发出验证错误的ex属性名)提取有意义的信息给用户
我将IDataErrorInfo用于验证规则,而不是属性。EF验证不会验
在.NET4上使用实体框架
这是我的密码:
using (frfcourEntities frf = new frfcourEntities())
{
EntityKey routehdrId = new EntityKey("frfcourEntities.Routehdrs", "Refno", "xxx");
try{
var routehdr = frf.GetObjectBy
当我将实体保存到数据库时,我会加密OnSaveChanges事件处理程序中的值。当实体从数据库加载回来时,我将使用OnObject Materialized对值进行解密
这非常有效,但如果在实体化后对其中一个实体调用save,则对象上下文会认为该实体已被修改,并将其保存回数据库
那么,如何重置修改后的状态,使其认为解密后的值就是数据库中的值呢
我差不多一年前用过EF。我只是尝试使用TransactionScope处理相当复杂的查询,如下面的代码
using (var tran = new TransactionScope())
{
// Clear all data in some table
DataContext.SomeTables
.ForEach(x => DataContext.SomeTables.DeleteObject(x));
DataContext.SaveChan
上一页 1 2 3 4 5 6 ...
下一页 最后一页 共 27 页