0
我知道這可能是一個簡單的問題,但我很新的體系結構,我想做正確的。所以,謝謝你的理解。無法插入新的記錄使用實體框架6 +代碼優先+溫莎城堡
我也是Castle Windsor的新手,沒有和Unit Of Work一起使用沒有Repository模式 - 我甚至不知道我是否需要他們來解決我目前遇到的問題。
我試圖做到:
我有一個名爲IDomain只有一些性質和具體的POCO類域實現它的接口。
IDomain接口:
public interface IDomain : IPersistentObject
{
int DomainId { get; set; }
string Name { get; set; }
[LocalizedString]
string ItemName { get; set; }
[LocalizedString]
string ItemDescription { get; set; }
int ItemValue { get; set; }
}
域 POCO類:
public class Domain : AbstractDefault, IDomain, ILocalizedEntity
{
public virtual int DomainId { get; set; }
public virtual string Name { get; set; }
[LocalizedString]
public virtual string ItemName { get; set; }
[LocalizedString]
public virtual string ItemDescription { get; set; }
public virtual int ItemValue { get; set; }
}
我DomainService.cs類做這樣的:
public void Insert(IDomain param)
{
using (var db = new DefaultContext())
{
new DomainValidation(new DbMetaData().GetMetaData, Settings.Default.CultureName).Validate(param);
db.Domains.Add((Domain)param);
}
}
另一個重要信息是我使用AOC,即攔截方法調用我的域類。見我的溫莎安裝位:
public class Installers : IWindsorInstaller
{
public void Install(IWindsorContainer container, IConfigurationStore store)
{
container.Register(Component
.For<IInterceptor>()
.ImplementedBy<Class1>()
.Named("DomainInterceptor"))
.Register(Component
.For<IDomain>()
.ImplementedBy<Domain>()
.LifestyleTransient()
.Interceptors(InterceptorReference.ForKey("DomainInterceptor")).Anywhere);
}
}
在我的單元測試我做:
var domain = container.Resolve<IDomain>(); // Returns IDomainProxy, not IDomain
domain.Name = "MIN_MAX";
domain.ItemName = new LocalizedProperty("en-US", "Mininum").Serialize();
domain.ItemValue = (int)MinMax.Minimum;
new DomainService().Insert(domain); // If I try to cast by doing .Insert(domain as Domain), I get a null
但是,當我的代碼達到 「。新增(域)參數)」(DomainService.cs)我得到的錯誤:「無法轉換類型‘Castle.Proxies.IDomainProxy’的對象鍵入‘Model.Domain’」。
爲什麼會出現這個錯誤,浩我是否應該修復它,考慮到我確實想要使用IoC,Windsor等?
此致敬禮。