2016-09-23 147 views
0

(使用Microsoft.AspNet.Identity)C#我可以從EntityFramework擴展IdentityMessage嗎?

的EmailService內的IdentityMessage消息有3個屬性

public virtual string Body { get; set; } 
public virtual string Destination { get; set; } 
public virtual string Subject { get; set; } 

當你只有1「從」 ADRESS它是足夠的,但如果你想要更多的則一個「來自」地址,這是一個問題,我需要額外的財產。

public string From { get; set; } 

所以我擴展的類IdentityMessage(就像我與用戶和角色DIT)

public class ExtendedMessage : IdentityMessage 
{ 
    public string From { get; set; } 
} 

所以我改變了默認實現

public class EmailService : IIdentityMessageService 
{ 
    public async Task SendAsync(IdentityMessage message) 
    { 
     await configSMTPasync(message); 
    } 

    // send email via smtp service 
    private async Task configSMTPasync(IdentityMessage message) 
    { 
     // SEND MAIL 
    } 
} 

隨着

public class EmailService : IIdentityMessageService 
{ 
    public async Task SendAsync(ExtendedMessage message) 
    { 
     await configSMTPasync(message); 
    } 

    // send email via smtp service 
    private async Task configSMTPasync(ExtendedMessage message) 
    { 
     // SEND MAIL 
    } 
} 

但是IIdentityMessageService是st生病參考原始的IdentityMessage(它不像預期的那樣工作)

什麼是最好的方式來得到這個工作(使用Microsoft.AspNet.Identity;框架)?

在此先感謝。

+0

看看ClaimsIdentity,它有一個字典,你可以添加你想添加的任何屬性。 –

回答

0

您不能使用繼承,因爲一旦從數據源加載實體,EF將不知道繼承,因此它將實例化基本類型而不使用屬性,而不使用您的屬性派生類型。如果EF必須使用它,任何繼承都必須映射到EDMX中。

使用部分類將解決你的問題,但:

部分類的所有部分必須在同一程序中定義從您的局部部分 屬性不會從你的一部分的區域保存到數據庫 屬性不能用在LINQ到實體的查詢

相關問題