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等?

此致敬禮。

回答

0

在那些情況下Castle Windsor使用「代理」界面創建新實例。我最終在我的Service類中使用了AutoMapper