始める前に、次のように言います。ストアドプロシージャを呼び出しており、内部でのみ使用できるため、リポジトリを拡張する必要があります。多くの人はこれを知らないようですので、「DataContextを拡張しないでください」とは言わないでください。DataContext
ExecuteMethodCall
WindsorをIoCコンテナとして使い始めたところです。私のコントローラーは喜んで次のことを行います。
public ContractsControlController(IContractsControlRepository contractsControlService)
{
_contractsControlRepository = contractsControlService;
}
しかし、私のリポジトリには次のコンストラクタが必要です。
public ContractsControlRepository()
: base(ConfigurationManager.ConnectionStrings["AccountsConnectionString"].ToString()) { }
ただし、IoCコンテナは、web.configでリポジトリの接続文字列を指定できるようにするためのものです。これを行うには、リポジトリ内のコンストラクターはどのように見える必要がありますか?私が示したものを指定しないと、引数がゼロのコンストラクターがないと文句を言います。
乾杯
編集
global.asax.csで
ControllerBuilder.Current.SetControllerFactory(new WindsorControllerFactory());
WindsorControllerFactory.cs(ルート内)
public class WindsorControllerFactory : DefaultControllerFactory
{
WindsorContainer container;
public WindsorControllerFactory()
{
container = new WindsorContainer(new XmlInterpreter(new ConfigResource("castle")));
var controllerTypes = from t in Assembly.GetExecutingAssembly().GetTypes() where typeof(IController).IsAssignableFrom(t) select t;
foreach (Type t in controllerTypes)
{
container.AddComponentLifeStyle(t.FullName, t, LifestyleType.Transient);
}
}
protected IController GetControllerInstance(Type controllerType)
{
return (IController)container.Resolve(controllerType);
}
}
しかし、container
web.configに何も入っていない場合は必要ありませんか?