草庐IT

c# - Entity Framework 的行级安全性

我一直在考虑如何使用EntityFramework实现行级安全性。这个想法是让数据库不可知,这将提供方法来限制来自ObjectContext的行。我最初的一些想法涉及修改由EDMGEN工具创建的部分类,这提供了一些有限的支持。用户仍然可以通过使用他们自己的eSQL语句和QueryObject来绕过这个解决方案。我一直在寻找一个全面的解决方案,该解决方案将存在于数据库提供商之上,以便它保持不可知。 最佳答案 当然可以。重要的是阻止对对象上下文的直接访问(防止用户构建自己的ObjectQuery),而是为客户端提供一个更窄的网关,在该网

c# - 在运行时更改 Entity Framework 数据库架构

在大多数ASP.NET应用程序中,您可以通过在运行时修改连接字符串来更改数据库存储。即我可以通过简单地更改连接字符串中“数据库”字段的值来从使用测试数据库更改为生产数据库我正在尝试使用EntityFramework更改架构(但不一定是数据库本身),但没有成功。我看到的问题是edmxxml文件中的SSDL内容存储了每个实体集的模式。见下文现在我已经将模式属性值从测试更改为“prod”并且它有效..但这似乎不是一个好的解决方案。我需要更新evert实体集和存储过程(我有+50个表)我只能在编译时执行此操作吗?如果我随后尝试更新实体模型-由于EF无法识别该表已存在于edm中,因此正在读取已存

c# - Parallel.For 在大约 1370 次迭代后卡住,不知道为什么

我正在对7500多个对象运行Parallel.For循环。在那个for循环中,我对每个对象做了很多事情,特别是调用两个Web服务和两个内部方法。Web服务只是检查对象、处理并返回一个字符串,然后我将其设置为对象的属性。两个内部方法也是如此。我没有将任何内容写入磁盘或从磁盘读取。我还使用标签和进度条更新了winforms应用程序中的UI,让用户知道它的位置。这是代码:vartask=Task.Factory.StartNew(()=>{Parallel.For(0,upperLimit,(i,loopState)=>{if(cancellationToken.IsCancellation

c# - Entity Framework - 使用数据注释的属性的默认值

我有一个这样的模型publicclassMyModel{publicintMyModelId{get;set;}publicstringName{get;set;}publicstringDescription{get;set;}publicstringTitle{get;set;}}我想知道是否有一种方法,使用数据注释,将属性的值(比如标题)设置为其他属性值的默认值,即名称。像这样的东西:if(MyModel.Title=="")MyModel.Title=MyModel.Name; 最佳答案 如果您想要默认值,请在实体默认(无参

c# - Entity Framework 6.1.0 SaveChangesAsync

我有EF帮助程序类可以异步保存更改:publicasyncTaskSaveOrUpdateAsync(TEntityentity)whereTEntity:class,IContextEntity{if(entity.Id==0)context.Set().Add(entity);else{TEntitydbEntry=context.Set().Find(entity.Id);if(dbEntry!=null)dbEntry=entity;}returnawaitcontext.SaveChangesAsync();}publicvoidSave(){TasksaveEntit1As

c# - Entity Framework 指南

我正在尝试使用SQLServer2008设置EntityFramework。我将Guid用于表上的键。有没有办法设置它以便数据库自动生成key?我尝试将“RowGuid”设置为true,并将列的默认值设置为“(newid())”。无论哪种方式,映射类仍然需要我在C#端给它一个Guid。有什么想法吗? 最佳答案 Notyet:17.4.CanIuseaserver-generatedguidasmyentitykey?Unfortunately,inv1oftheEFthisisnotsupported.Whileitispossib

c# - 如何在 Fluent NHibernate 中映射 IDictionary<string, Entity>

我有一个带有IDictionary的类。如您所见,它使用多对多从其表中获取CodedExamples,使用tOwnedCodedExample表查找哪些属于OwnerClass。我意识到这是一个非常基本的(希望是标准的)映射,但我正在苦苦挣扎,找不到任何文档,因此非常感谢任何可能的帮助。非常感谢斯图 最佳答案 我有一个工作示例,这应该让您清楚。类:publicclassCustomer:Entity{publicIDictionaryFavouriteBooks{get;set;}}publicclassBook:Entity{pu

c# - 分层 Entity Framework 查询异常

我正在尝试使用EntityFramework构建分层集合-请参阅下面的查询-给定公司中的每个成员都有一个父成员-但是在尝试执行此操作时我得到以下异常:System.NotSupportedException:Thetype'Member'appearsintwostructurallyincompatibleinitializationswithinasingleLINQtoEntitiesquery.Atypecanbeinitializedintwoplacesinthesamequery,butonlyifthesamepropertiesaresetinbothplacesan

c# - 帮助我理解 "LINQ to Entities only supports casting Entity Data Model primitive types"

我有一个工作单元和一个使用EF4和POCO的存储库。由于EF在可以Skip()和Take()之前需要一个有序集,因此我添加了以下单元测试(没有模拟)只是为了提取一条记录以查看它是否有效。varmyList=UOW.EntityRepo.Get(orderbyLambda:p=>p.ID,page:1,pageSize:1);这导致表达式orderbyLambda={p=>Convert(p.ID)}和枚举期间的错误。ID是tinyint(Int16/短)那么为什么按ID排序失败呢?有关错误的更多信息Unabletocastthetype'System.Int16'totype'Syst

c# - .NET Entity Framework 插入与批量插入

当我使用我的xxxContext对象并向表发出多个添加时,EntityFramework如何将其解析为SQL?它会循环执行insertintoxxx还是如果有数百行,它是否足够智能以发出批量插入命令?奖励问题:如果它不发出批量插入,是否有办法强制它发出,这样我的数据库性能就不会被单独的插入破坏?还是批量处理到临时表,然后像Upsert一样合并到原始表? 最佳答案 任何ORM工具的缺点是它“很啰嗦”。大多数时候这就足够了。有时不是。简短的回答是“不”。这就是为什么有时我仍然会选择IDataReader而不是EF或NHibernate等