我开始一个新项目,我需要创建一个项目来实现Entity Framework 4.0和Unity Framework 2.0以及Enterprise Library 5.0.
我是Entity Framework和Unity Framework的新手,并且对如何使用数据库获取正常的Object BO和DAL感到困惑.
有人能指出我在同一个项目中开始的一些简单例子.后来我需要将ASP.NET MVC 2.0用于UI.
我已经看过Julie Lerman的视频实体框架我可以将桌子作为实体获得,但之后我不知道Unity,Enterprise Library将适用于哪里.之后我迷失了.
有人请帮助我.
asp.net-mvc entity-framework enterprise-library unity-container
在3层Windows应用程序中,我将在哪里放置包含统一配置的配置文件?如果它位于前层,那么我是否需要在我的所有前端,业务和数据层项目中引用unity.dlls,以便项目识别IUnityContainer接口等?
我在哪里加载配置容器?它会在前层的主方法或数据层中,还是在需要时加载容器?
如果所有内容都放在前层,那么整个项目并不依赖于前层,如果我将前层从Windows App更改为Web应用程序,那么我必须再次进行统一工作!
我需要在arraylist或列表中创建数组,我使用了这个:
List<string[]> OL = new List<string[]>();
string[] OLdata = new string[7];
OLdata[0] = .. ; OLdata[1] = .. OLdata[6] = ..
OL.Add(OLdata);
Run Code Online (Sandbox Code Playgroud)
我可以用它来访问它
OL[0].GetValue(3) or OL[0][3] ..
Run Code Online (Sandbox Code Playgroud)
再次写入OLdata并将其添加到OL列表中,当我尝试访问数据时
OL[0][3] ..
Run Code Online (Sandbox Code Playgroud)
我正在获取插入数组的新数据,我显然期待OL [0] [3]和OL [1] [3]中的不同值,是什么原因或任何其他建议?
从我的一个ViewModel我有下面的调用,从服务器获取信息.
List<Customer> listOfCustomers = GetCustomerList(domain,password);
Run Code Online (Sandbox Code Playgroud)
将此信息id listOfcustomers传递给MVVM场景中的另一个ViewModel(CustomerViewModel)的最佳方法是什么.
我需要在这里使用Unity,还是使用事件聚合器发布,如下面的RichardOD所述.
我有一个场景,我需要使用辅助类注入一个类型的实例.在我们的系统中,我们目前正在使用Unity将该对象注入各个层.
这是我目前拥有的:
container.RegisterInstance<ITest, new Test()>();
Run Code Online (Sandbox Code Playgroud)
但是,我想使用一个可以为我创建实例的辅助类:
container.RegisterInstance<ITest, Helper.GetITestIntance()>();
Run Code Online (Sandbox Code Playgroud) 学习实体框架,存储库和IOC,我想要实现的是实现存储库模式,以便更改我的数据源提供程序.
请从开源项目中查看此示例:
namespace MyApp.Domain.Interfaces
{
public interface IEFContext : IDisposable
{
}
}
Run Code Online (Sandbox Code Playgroud)
namespace MyApp.Data.Context
{
public class EFContext : DbContext, IEFContext
{
public const string DBConnectionName = @"MyDBName";
public EFContext() : base(DBConnectionName)
{
}
public DbSet<Member> Member { get; set; }
}
}
Run Code Online (Sandbox Code Playgroud)
namespace MyApp.Domain.Interfaces.Repositories
{
public interface IMemberRepository
{
Member GetUser(string username);
}
}
Run Code Online (Sandbox Code Playgroud)
namespace MyApp.Data.Repositories
{
public class MemberRepository : IMemberRepository
{
private readonly EFContext _context;
public MemberRepository(IEFContext context)
{
_context = context as …Run Code Online (Sandbox Code Playgroud) c# entity-framework inversion-of-control unity-container repository-pattern
我在使用MVVM的wpf应用程序中使用Prism + Unity。我是Prism和Unity的初学者。
我希望能够关闭当前视图。我读过的各种解决方案和文章都指出,做到这一点的最佳方法是从视图模型中进行。但是视图模型需要一个区域管理器对象才能关闭视图。好的,让我们设置构造函数注入。以前从未尝试过,但是关于SO的问题很多。
首先让我解释一下如何将事物连接在一起。我有一个引导程序类,用于处理类型和实例的注册。
这是我的视图模型的注册方式:
container.RegisterType<IViewModel, ViewAccountsViewModel>(new InjectionConstructor(new ResolvedParameter(typeof(RegionManager))));
container.RegisterType<ViewAccountsView>();
Run Code Online (Sandbox Code Playgroud)
这是视图帐户视图的模块:
public class ViewAccountsModule : IModule
{
private readonly IRegionManager regionManager;
private readonly IUnityContainer container;
public ViewAccountsModule(IUnityContainer container, IRegionManager regionManager)
{
this.container = container;
this.regionManager = regionManager;
}
/// <summary>
///
/// </summary>
public void Initialize()
{
regionManager.RegisterViewWithRegion("MainRegion", () => this.container.Resolve<ViewAccountsView>());
}
}
Run Code Online (Sandbox Code Playgroud)
在我的ViewAccountsView.xaml中,我像这样设置数据上下文:
<Grid.DataContext>
<vm:ViewAccountsViewModel/>
</Grid.DataContext>
Run Code Online (Sandbox Code Playgroud)
而我的视图模型构造函数:
[InjectionConstructor]
public ViewAccountsViewModel(IRegionManager regionManager)
{
if (regionManager == null) throw new ArgumentNullException("regionManager");
this.regionManager = regionManager;
}
Run Code Online (Sandbox Code Playgroud)
编译解决方案时,收到错误消息“ ViewAccountsViewModel”类型不包含任何可访问的构造函数。如果将默认构造函数添加到视图模型中,则会显示该视图,但无法从区域中删除该视图。我收到一个参数null异常。
这是删除视图的代码:
regionManager.Regions["MainRegion"].Remove(regionManager.Regions["MainRegion"].GetView("ViewAccountsView"));
Run Code Online (Sandbox Code Playgroud)
我仍然是IoC和DI的初学者。有什么我想念的吗?
调用container.RegisterTypes时是否可以使用程序集通配符?
即如果我只想从以Foo.Bar开头的Assemblies中注册类,有没有办法做到这一点.所以如果我有Foo.Bar.Test1然后是Foo.Bar.Test2程序集,它会抓住这两个而不必明确引用这些名称?
I want to use an IOC container preferably unity as a resolver function lookup
This what I have
class ParmaterType {}
class Monkey : ParmaterType {}
class Handler {virtual void HandleMessage(){}}
class MonkeyHandler : Handler {}
class Main
{
Dictionary<Type, Type> _Mapper= new> Dictionary<Type, Type >()
{ { typeof(Monkey) , typeof(MonkeyHandler) } };
public void OnMessage(ParmaterType type)
{
Handler instance = (Handler)Activator.CreateInstance(_Mapper[type]);
instance.HandleMessage(type);
}
}
Run Code Online (Sandbox Code Playgroud)
and what i want is something like this :
IocContainer.Register(typeof(Monkey), typeof(MonkeyHandler ))
public void OnMessage(ParmaterType …Run Code Online (Sandbox Code Playgroud) 我具有自IdentityDbContext继承的自定义DbContext。类看起来像这样:
public class ReaderContext : IdentityDbContext<IdentityUser>
{
//DbSets
public ReaderContext()
: base("name=ReaderDb")
{
System.Data.Entity.Database.SetInitializer<ReaderContext>(null);
Database.Initialize(true);
}
}
Run Code Online (Sandbox Code Playgroud)
而且当DbContext看起来像这样时,创建存储库(使用ReaderContext)的代码可以正常工作:
container.RegisterType<IRepository, CustomRepository>(new HierarchicalLifetimeManager());
var repo = container.Resolve<IRepository>();
Run Code Online (Sandbox Code Playgroud)
当我向ReaderContext添加另一个构造函数(而不是删除现有构造函数!)时,创建CustomRepository在UnityContainer中不再起作用。
public ReaderContext(DbConnection connection)
: base(connection, true)
{
}
Run Code Online (Sandbox Code Playgroud)
我需要这样,这样我才能尽力而为。我正在使用Unity容器。我有例外:
2017-08-07 19:02:57.9256:异常:Microsoft.Practices.Unity.ResolutionFailedException:依赖项的解析失败,类型=“ DataAccess.Database.Repositores.IRepository”,名称=“(无)”。发生以下异常:正在解决。异常是:InvalidOperationException-当前类型System.Data.Common.DbConnection是抽象类,无法构造。您是否缺少类型映射? - - - - - - - - - - - - - - - - - - - - - - - - 当时例外情况是,该容器是:
解析DataAccess.Database.Repositores.CustomRepository,(无)(从DataAccess.Database.Repositores.IRepository映射,(无))
解析构造函数DataAccess.Database.Repositores.CustomRepository(DataAccess.Database.ReaderContext上下文)的参数“ context” DataAccess.Database.ReaderContext,(无)解析构造函数的参数“连接” DataAccess.Database.ReaderContext(System.Data.Common.DbConnection连接)解析System.Data.Common.DbConnection,(无)-> System.InvalidOperationException :当前类型System.Data.Common.DbConnection是抽象类,无法构造。您是否缺少类型映射?
为什么添加新的构造函数会破坏统一配置?另外,我尝试从头开始设置统一性,但不能使其正常工作。可能我不知道团结如何运作,所以欢迎您提出任何建议:)