- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我希望这是有道理的。我有一个使用 Entity Framework 的 ASP.NET Web 应用程序。我在数据库中添加了几个自定义表,并创建了一个单独的项目来处理这些表的 CRUD 操作。我选择了单独的项目,因为我不希望将来对应用程序的升级会覆盖我的自定义功能。
我的问题是这样的。如何将我的自定义 ObjectContext 附加/组合到应用程序的 ObjectContext?我想使用相同的 UnitOfWorkScope(已在应用程序中)为每个 HTTP 请求维护一个 ObjectContext 实例。同样,出于上述原因,我不想将我的 ObjectSet 添加到应用程序的 ObjectContext。
这是一些代码:
Widget.cs
public partial class Widget
{
public Widget()
{
}
public int WidgetId {get;set;}
public string WidgetName {get;set;}
}
WidgetObjectContext.cs
public partial class WidgetObjectContext : ObjectContext
{
private readonly Dictionary<Type, object> _entitySets;
public ObjectSet<T> EntitySet<T>()
where T : BaseEntity
{
var t = typeof(T);
object match;
if(!_entitySets.TryGetValue(t, out match))
{
match = CreateObjectSet<T>();
_entitySets.Add(t, match);
}
return (ObjectSet<T>)match;
}
public ObjectSet<Widget> Widgets
{
get
{
if((_widgets == null))
{
_widgets = CreateObjectSet<Widget>();
}
return _widget;
}
}
private ObjectSet<Widget> _widgets;
在我的 WidgetManager 类中,如果我使用应用程序的 ObjectContext,我会像这样查询我的表:
var context = ObjectContextHelper.CurrentObjectContext;
var query = from c in context.ObjectSet .... etc
我想要的是做这样的事情:
var context = ObjectContextHelper.CurrentObjectContext.Attach(WidgetObjectContext);
我知道这行不通,但这是我要实现的目标的要点。希望这已经足够清楚了。谢谢。
最佳答案
我认为这是不可能的。 ObjectContext 创建连接到描述映射和数据库的元数据的实体连接。但是您必须使用不同的元数据集——一组用于 ASP.NET 应用程序,另一组用于单独的项目。您只需要两个连接即可使用这些模型 => 您需要两个 ObjectContext。
关于asp.net - 将其他 ObjectSet 从单独的项目附加到 ObjectContext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3730562/
首先,让我自己对必须维护 VB5 代码做出强制性的尖刻评论:是的,这很可怜,但我们可以切入正题吗?谢谢。 我不得不重新审视一些在 1998 年编写并且自 2003 年以来没有被触及的非常旧的代码。我遇
我想在 EntityFrameWork 6 中使用脚手架,但得到这个: Unable to retrieve metadata for '[myNameSpace].Models.prod'. Una
为什么我打不通DbContext.ObjectContext直接地?我可以做到((IObjectContextAdapter)context).ObjectContext 我认为内部机制是这样的接口(
我们在控制台应用程序中运行一个非常简单的函数,该函数循环遍历数据库并将表列到变量中。当然,最初它做的更多,但我们将其简化为仅列出 1 个表。 我们注意到,每次创建新的 ObjectContext 时,
我在我的应用程序中定义了三个数据模型。我的问题是,如果我需要三种不同的上下文?那么三个不同的 sqlite 文件? 目前,每次我将一条记录保存到我的数据库中时,我都会执行以下操作: managedOb
这里只是一个快速的完整性检查! 如果我在实例类中有一个静态方法,例如: public class myClass { public static void AMethod() {
我在使用 EntityFramework 4.0 创建关系时出错 对数据库的更改已成功提交,但更新对象上下文时出错。 ObjectContext 可能处于不一致状态。 内部异常消息:无法检索关系“Co
我按照此处描述的方式使用 Entity Framework : Entity framework uses a lot of memory 我意识到我需要使用“using”语句才能正常工作。当我在做的
我已经使用内存分析器对此进行了检查,没有真正的实体保留在内存中但是哈希集、字典和 EntityKey 对象——但我找不到如何断开这些引用的方法。 如此简单的问题:如何阻止上下文(或其 ObjectSt
我正在创建一个委托(delegate)来检索数据库中的所有专辑记录。我在另一个项目中使用了同样的方法,但由于某种原因,这次我遇到了错误。 我错过了一步吗?我不确定为什么会出现此错误。 代码
如何更新数据存储中的所有脏实体,并将其更改的值重置为原始存储值? 方法ObjectContext.Refresh需要将要刷新的实体作为参数。 最佳答案 以下通常有效: Context.Refresh(
有没有办法保存单个跟踪对象的更改,而不是 ObjectStateManager 中的所有对象,我的意思是: ObjectContext.SaveChanges(Contact) 最佳答案 也许您可以创
我在这里做错了什么? ... using (var ctx = ObjectContextManager.GetManager("MyDataContext")) { var idsToUpd
我有一个用 php 编写的宠物项目。我的代码所做的工作之一是加载一堆 csv 文件并将它们写入具有自动生成的主键和多部分唯一键的 MySQL 表。我无法控制和检查是否已处理某些文件的方法,因此唯一 k
我使用不同的命令和不同的参数多次调用 ObjectContext.ExecuteStoreCommand,尽管我对几个命令使用相同的参数列表(对象)。我收到以下异常: System.ArgumentE
我正在使用为每个请求创建一个 ObjectContext 的概念。从技术上讲,我将 ObjectContext 实例添加到 HttpContext.Current.Items。但我不知道如何正确地杀死
我已经看到这个问题被问了一百万次,但我遇到的每一个建议似乎都已经涵盖了。 我的 MVC 解决方案中有 Entity Framework ,我有一个“存储库”,它试图检索 MyObject 的集合: p
我不太确定 Dispose 我的 ObjectContext 的正确方法是什么。这是我的设置方式: public abstract class DataManagerBase where T:Obje
我正在尝试将大量行(>10,000,000)插入 MySQL使用 EF ObjectContext(数据库优先)的数据库。看完this question的回答后我编写了这段代码(批量保存)来插入大约
我尝试在 MVC4 中级联下拉列表。我有 2 个下拉列表 1 - 类别2 - 子类别。 当用户创建新产品时,他需要选择类别,然后选择与该类别相关的子类别。我将 ajax 与杰森一起使用。 publi
我是一名优秀的程序员,十分优秀!