小编OKB*_*OKB的帖子

实体框架4和查询结果的缓存

假设我有一个表或2包含永远或很少更改的数据,是否有任何尝试缓存这些数据的点?或者,当我第一次加载数据时,EF上下文会为我缓存该数据吗?我正在考虑从这些表加载所有数据并使用静态列表或其他东西将数据保存在内存中,并在我需要同一上下文中的数据时查询内存数据而不是表.我所说的那些表通常包含几百行数据.

c# caching entity-framework-4

25
推荐指数
2
解决办法
2万
查看次数

使用Entity框架和POCO类替换遗留数据层的策略

我们正在使用.net C#4.0,VS 2010,EF 4.1和遗留代码.

我正在开展一个win form项目,我决定开始使用实体框架4.1来访问ms sql db.代码库很旧,我们有一个使用数据适配器的现有数据层.这些数据适配器遍布各处(在web应用程序和win form应用程序中)我的计划是随着时间的推移用EF替换旧的db访问代码,并摆脱UI层和数据层之间的紧密耦合.

因此,我的想法是或多或少地将EF与遗留数据访问层相结合,并使用EF更加现代地利用EF来缓慢替换旧数据层.所以现在我们需要使用EF和遗留数据库访问代码.

到目前为止我所做的是添加一个包含edmx文件和上下文的项目.edmx是使用数据库第一种方法生成的.我还添加了另一个包含POCO类的项目(通过使用ADO.NET POCO实体生成器).我或多或少地在她的"编程实体框架"一书中关注了Julia Lerman关于如何拆分模型和生成的POCO类的方法.数据库模型已设置多年,并不是更改表和关系,触发器,存储过程等的选项,所以我基本上坚持使用db模型.

我已经阅读了关于存储库模式和工作单元的内容,我有点像模式,但是当我同时使用EF和遗留数据库访问代码来处理时,我很难实现它们.特别是当我没有时间用纯EF实现替换所有遗留数据库访问代码时.在一个完美的世界里,我会重新开始,重新选择数据模型,但这不是一个选择.

存储库和工作单元模式是否可以实现?为了在业务层中使用POCO类,我有时需要使用EF和遗留db代码来填充我的POCO类.换句话说,我有时可以使用EF来检索我需要的部分数据,并使用旧的db访问层来检索其余数据,然后将数据映射到我的POCO类.当我想更新一些数据时,我需要从POCO类中选择数据并使用遗留数据访问代码将数据存储在数据库中.因此,当我想在数据库中保存数据时,我需要在UI中显示数据,反之亦然,我需要将从遗留数据访问层检索到的数据映射到我的POCO类.

为了使事情复杂化,我们将一些数据存储在表中,我们不知道运行前的名称(请不要问我为什么:-)).因此,在旧的db访问层中,我们必须动态创建sql语句,我们根据其他表中的信息插入表名和列名.

我还发现POCO类之间的关系有点过于以数据为中心.换句话说,我觉得我需要一个更简化的域模型来使用.也许我应该创建一个适合该法案的域模型,然后使用POCO类作为"DAO"来填充域模型类?

您将如何使用Repository模式和Unit of Work模式实现此目的?(如果这是要走的路)

c# entity-framework data-access-layer poco repository-pattern

7
推荐指数
2
解决办法
2604
查看次数

LINQ以及如何返回特定类型的列表

我有2个表(Document和DocumentClass),它们包含以下列:

DocumentClass:DocClassID,Name,ParentID

文档:DocID,Name,DocClassID

DocumentClass表包含父记录和子记录,父记录和子记录之间的关系是ParentID列.一个Document记录与在子记录链接DocumentClass由DocClassID外键.

父记录DocumentClass包含ParentID = 0且子记录DocumentClass包含ParentID!= 0

我想从DocumentClass表中检索孩子姓名和孩子的父母姓名.

我设法创建了一个功能,为我做到这一点.我发送文档ID列表,找到DocumentClass文档链接到的那些记录(子记录),然后找到这些子记录的父记录.然后我将我想要的信息放入Child类.

public List<Child> GetDocClassInfo(List<int> docIds)
{
var result = from dc in _context.DocClasses
             from d in _context.Documents
             where dc.DocClassID == d.DocClassID
             where dc.DocClassID != 0
             where docIds.Contains(d.DocID)
             select new 
             {
                 children = from p in _context.DocClasses
                            where dc.ParentID == p.DocClassID
                            select new Child
                            {
                                ChildId = dc.DocClassID,
                                ChildDocClassName = dc.DocClassName,
                                ParentId = p.DocClassID,
                                ParentDocClassName = p.DocClassName
                            } …
Run Code Online (Sandbox Code Playgroud)

c# linq casting list subquery

5
推荐指数
2
解决办法
8628
查看次数

将自定义t4模板添加到DDL生成模板下拉列表

我知道我可以在文件夹中添加模板

C:\ Program Files(x86)\ Microsoft Visual Studio 11.0\Common7\IDE\Extensions\Microsoft\Entity Framework Tools\DBGen

使其在DDL生成模板下拉列表中可见,但随后我需要将模板分发给我的团队成员,以便他们可以将模板添加到同一文件夹中.

我希望通过以某种方式将模板添加到VS 2012解决方案并使其在同一下拉列表中可见,我可以获得相同的结果

你知道实现这个目标的方法吗?我正在使用VS 2012并生成数据库,我使用的是Model First方法

t4 entity-framework-5 ef-model-first

5
推荐指数
1
解决办法
1494
查看次数

TPH,TPT,TPC和OR映射器

我正在使用一个数据模型,该数据模型具有一组类型,这些类型共享一些常见字段,例如Id,Name,Description。更具体地说:

Document类具有属性列表。这些属性在我们的域中,例如String,Integer,DateTime等类型,以及其他“复杂”类型,例如Address以及String,Integer,Address等列表,现在,在我的脑海中,我将对Attribute类进行建模,以便抽象基类(AttributeBase),它包含公共属性(Id,Name,Description),然后在适当的子类中具有更特定的属性。例如,StringAttribute(值),IntegerAttribute(值),AddressAttribute(街道等),StringListAttribute,IntegerListAttribute,AddressListAttribute。我们正在谈论15-20个不同的子类。但是,您将如何在数据库中为这些类建模?您会选择TPH,TPT还是TPC?我已经读过有关选择TPT和EF 4.1并为TPH设置一张Massiv表时性能下降的信息。即使性能更好,听起来也没错。我们正在谈论表中潜在的10000-1000000 ++数据行。

在这些情况下,您是否有第一手经验?我真的很想就这个问题向您请教。

nhibernate data-modeling table-per-type table-per-hierarchy entity-framework-4.1

2
推荐指数
1
解决办法
2148
查看次数

单点登录WinForms应用程序和asp.net wep应用程序

我被指派在我们的产品中找到一种实施SSO的方法.我们有几个Winform应用程序和一个asp.net 4.0 Web应用程序(不是MVC).

所有产品都是使用.Net 4.0构建的,Web应用程序是ASP.NET 4.0.一些Winforms通过Web服务(asmx)与我们的API进行通信,有些则直接使用我们的API.Web应用程序也使用相同的API.我们提供一组Web服务(asmx),它们使用相同的API到外部客户端.

目前,我们在系统中拥有自己的身份验证实现(用户,密码,角色),我们希望用SSO替换它.或者这两种认证制度能以某种方式共存吗?Winforms用于Intranet,Web应用程序在Intranet中使用,我们还为客户端托管Web应用程序(可从Internet访问).

用户是在我们的系统中创建的,但同时我们使用自己的工具从Active Directory导入用户.Active Directory确实是主要的用户来源.

我读过有关Windows Identity Foundation的内容,我想知道是否可以使用它来实现SSO.但我不明白的是如何在winform应用程序中直接使用API​​时使用WIF.

我想要实现的是从我们的系统中删除所有用户管理并使用Active Directory作为用户源.我想这意味着使用ADFS 2.0创建声明等.

我可以在此实现中使用.Net Framework 4.5(我知道WIF现在是.Net Framework 4.5中的一等公民).

你有什么建议怎么做?WIF是在winforms应用程序和Web应用程序中实现SSO的最佳替代方案吗?

asp.net authentication winforms wif single-sign-on

2
推荐指数
1
解决办法
2909
查看次数

C#中的设计问题:泛型或多态或两者兼而有之?

我需要一些设计问题的帮助.我试图实现的是:

我有一个名为Document的主类.此类具有属性类列表.这些属性类具有一些常见属性,例如Identity和Name,但它们在我称为Value的一个属性中有所不同.Value类型对于每个不同的Attribute类是不同的,并且类型为string,integer,List,DateTime,float,List以及由多个属性组成的类.一个例子是我将调用PairAttribute的类,它具有2个属性:Title和Description.

我试图实现的是Attribute子类的Value属性的类型安全性,并且这些子类应该能够添加到Document类的Attribute列表中.我本可以只创建一个具有类型为Object的Value属性的Attribute类,并且完成它,但这正是我在这里要避免的.

公共属性(Identity和Name)应放在基类中我猜,我们可以调用那个AttributeBase类.但我希望有一个子类,比如StringAttribute,其中Value属性是string类型,IntegerAttribute类,其中Value属性是Integer类型,StringListAttribute,其中Value属性是List类型,PairAttribute类,其中Value是一个有几个属性等的类

你知道我怎么能实现这个吗?这是我应该采用的解决方案还是解决此类安全问题的更好方法?我会很感激代码示例澄清:)

c# generics polymorphism

1
推荐指数
1
解决办法
1512
查看次数