我正在启动一个新应用程序,该应用程序必须使用现有数据库,该数据库使用一些在.net中非常烦人的命名约定(表名以指定表的业务域的几个三元组开头,列名以表开头八卦,三卦都是大写的,用下划线等分隔,)。我想做的是编写一个简单的重命名规则(这就像找到最后一个下划线并获取后面的所有内容一样简单)并将其应用到EntityFramework中。我真的不想在编辑器中一个一个地编辑名字,尤其是因为数据库可能会改变,我不想重复多次。我正在使用DatabaseFirst(因为数据库已经存在并且它是“主数据库”)和EF4.xDbContextGenerator,它开箱即用(尽管类和属性的命名很糟糕)。我编辑了
这里有一个真实的例子,可以引出我的问题:我有一个AddCommentToArticleCommand,它有一个ArticleId、评论文本和电子邮件地址。这个命令:使用文章库获取文章(领域实体)如果文章存在,它会调用article.AddComment(commentText,emailAddress),将评论添加到文章中,如果不能添加则抛出异常(由于电子邮件格式无效、文章已关闭、评论未填写等)长等等...)但现在我不知道保存添加的评论的最佳方法是什么?我应该做类似articleRepository.Save(article)的事情吗?但是,如果只是添加评论,我为什么要保存文章?或者我
我是EF的新手,在删除我的对象方面遇到了一些困难。我的两个对象和关联的DbContext如下所示:publicclassContext:DbContext{publicContext():base(){}publicDbSetPersons{get;set;}publicDbSetVehicles{get;set;}}publicclassPerson{publicintPersonID{get;set;}publicstringName{get;set;}}publicclassVehicle{publicintVehicleID{get;set;}publicint?PersonI
只是我要完成的事情的概述。我们在我们的应用程序中保留远程数据库(第3方)的本地副本。我们使用api下载信息。我们目前按计划下载信息,然后将新记录插入本地数据库或更新现有记录。这是它目前的工作方式publicvoidProcessApiData(ListapiData){//gettheexistingaccountsfromthelocaldatabaseListexistingAccounts=_accountRepository.GetAllList();foreach(accountinapiData){//checkifitalreadyexistsinthelocaldata
在LinqToSql中,更新我的一个实体Faculty时,我正在创建Faculty对象的一个新实例,然后使用用户提供的值初始化一些属性。p>如果我将这个新对象附加到实体集并提交更改,则我未设置的属性将采用它们是任何数据类型的默认值。如何刷新新对象,使已设置的属性保留其值,而未设置的属性从数据库中获取值?谢谢 最佳答案 你试过吗context.Refresh(RefreshMode.OverwriteCurrentValues,faculty);提交更改后,context是您的linq2sql数据上下文,faculty是您要刷新的
我有一个应用程序,我正在尝试使用至少一个名义上的DDD类型的域模型来构建,并且正在努力处理某个部分。我的实体有一些业务逻辑,这些业务逻辑使用我目前在某些域服务中进行的一些财务计算和费率计算,以及我放入值对象中的一些常量值。我正在努力解决如何让实体使用领域服务内部的逻辑,或者这些服务内部的逻辑是否属于那里。这是我目前所拥有的:publicclassTicket{publicTicket(intid,ConstantRatesconstantRates,FinancialCalculationServicef,RateCalculationServicer){Id=id;ConstantR
如何更新一个实体而不必调用它来选择它。如果我为实体提供key,它是否应该不知道在对ObjectContext调用SaveChanges()后进行更新。我目前这样做:varuser=context.Users.Single(u=>u.Id==2);user.Username="user.name";user.Name="ABC123";context.SaveChanges();这行得通,但会强制选择。因为我知道Id,为什么我不能做这样的事情:varuser=newUser();user.Id=2;user.Username="user.name";user.Name="ABC123";
以下是我试图在其中定义外键关系的两个部分表。publicclassForm{[Key,Column("FormID")]publicSystem.GuidFormGUID{get;set;}[Column("PatGUID")]publicNullablePatientGUID{get;set;}}publicclassPatient{[Column("PatGUID")]publicSystem.GuidPatientGUID{get;set;}[Key,Column("PatID")]publicintPatientID{get;set;}对于这个例子,除了相关信息、字段、导航等,
我找到了这段代码here:publicstaticTDeepClone(thisTobj){using(varms=newMemoryStream()){varbf=newBinaryFormatter();bf.Serialize(ms,obj);ms.Position=0;return(T)bf.Deserialize(ms);}}也就是说我们可以通过这个东西对所有相关对象进行深拷贝。我正在尝试做这样的副本:db.Detach(myEntity);myEntity.EntityKEy=null;EntitynewEntity=newEntity();newEntity=DeepCl
我正在尝试使用lambda表达式生成一个LINQOrderBy子句,并将实体的列名称作为字符串输入(在下面的“sortOn”变量中)。下面的代码适用于生成lambda的sortOn值,如“代码”p=>p.Code但我还想对lambda可能所在的子实体进行排序p=>p.Category.Description所以在这种情况下,我只想设置sortOn="Category.Description"并生成正确的lamdba表达式。这可能吗?我们欢迎任何有关执行此操作的最佳方法的建议。此代码适用于简单的情况:varparam=Expression.Parameter(typeof(Product