我需要創建一種通用的方法,將缺少的語言條目添加到實現特定接口的所有實體中。我發現如何獲得我的收藏屬性,但我仍然不知道如何在繼續保存之前在其上添加新值。通過實體導航屬性集合添加新條目
繼我的一塊public override int SaveChanges()
處理。
foreach (var translationEntity in ChangeTracker.Entries(<ITranslation>))
{
if (translationEntity.State == EntityState.Added)
{
var translationEntries = translationEntity.Entity.GetType()
.GetProperties(BindingFlags.Public | BindingFlags.Instance)
.Where(x => x.CanWrite &&
x.GetGetMethod().IsVirtual &&
x.PropertyType.IsGenericType == true &&
typeof(IEnumerable<ILanguage>).IsAssignableFrom(x.PropertyType) == true);
foreach (var translationEntry in translationEntries)
{
//Add missing items.
}
}
}
類代碼樣本
public partial class FileType : ITranslation
{
public long FileTypeId { get; set; }
public string AcceptType { get; set; }
public virtual ICollection<FileTypeTranslation> FileTypeTranslations { get; set; }
public FileType()
{
this.FileTypeTranslations = new HashSet<FileTypeTranslation>();
}
}
public class FileTypeTranslation : EntityTranslation<long, FileType>, ILanguage
{
[Required]
public string TypeName { get; set; }
}
public partial class ElementType : ITranslation
{
public long ElementTypeId { get; set; }
public string Code { get; set; }
public virtual ICollection<ElementTypeTranslation> ElementTypeTranslations { get; set; }
public ElementType()
{
this.ElementTypeTranslations = new HashSet<FileTypeTranslation>();
}
}
public class ElementTypeTranslation : EntityTranslation<long, ElementType>, ILanguage
{
[Required]
public string Description { get; set; }
}
你能告訴我更多嗎?什麼不起作用?如何添加新翻譯的代碼看起來像? –
@KrzysztofSkowronek只是想象你有一個模型與一些集合屬性,並且你想從你的ChangeTracker修改這個集合。請考慮這個系列有一個已知的結構。 –
好的,但是上面的代碼中沒有工作?我明白,你調用base.SaveCahnges作爲你的覆蓋方法的最後一件事,所以它應該做你想做的。這個集合是IT翻譯界面的一部分嗎?或者這是IT翻譯對象的集合? –