Enjekte Edilmiş bir İkincil Deposu kullanarak doğrudan Orchard DB'den verileri alıp gönderen özel bir modül yazıyorum.Orchard CMS - geçişten sonra güncellenmeyen yeni özellikler
Bu, bir içerik bölümünü güncellemeye gerek kalmadan iyi çalışıyor. Geçişlerim sınıfında bir güncelleme ekliyorum ve güncelleme çalışıyor (DB şeması varsayılan değerlerle güncellendi), ancak yeni değerleri IRepository yoluyla güncelleyemiyorum. Değişimleri yıkamak için NHibernate.ISession içine düşmem gerekiyor.
Bu, yeni oluşturulmuş bir tarifte düzgün çalışıyor, yalnızca bir parçayı değiştirdiğimde.
public class TranslationsPartRecord : ContentPartRecord
{
internal const string DefaultProductName = "Product";
public TranslationsPartRecord()
{
ProductName = DefaultProductName;
}
public virtual string ProductName { get; set; }
}
public class TranslationsPart : ContentPart<TranslationsPartRecord>
{
public string ProductName
{
get { return Record.ProductName; }
set { Record.ProductName = value; }
}
}
public class TranslationsHandler : ContentHandler
{
public TranslationsHandler(IRepository<TranslationsPartRecord> repository)
{
Filters.Add(StorageFilter.For(repository));
}
}
public class Migrations : DataMigrationImpl
{
public int Create()
{
SchemaBuilder.CreateTable("TranslationsPartRecord", table => table
.Column<int>("Id", column => column.PrimaryKey().Identity())
.Column("ProductName", DbType.String, column => column.NotNull().WithDefault(TranslationsPartRecord.DefaultProductName))
);
return 1;
}
public int UpdateFrom1()
{
SchemaBuilder.AlterTable("TranslationsPartRecord", table => table.AddColumn("ProductDescription", DbType.String, column => column.NotNull().WithDefault(TranslationsPartRecord.DefaultProductDescription)));
return 2;
}
}
güncelleme sütunları çalıştırıldıktan sonra ben, bu örnekte ikinci özelliği "ProductDescription" eklemek
DB görünür ama Orchard tarifi yeniden dek i (Güncellememeniz edebilirsiniz: İşte anahtar kod parçacıkları şunlardır App_Data blat ve tekrar başlatın).// ctor
public AdminController(IRepository<TranslationsPartRecord> translationsRepository)
{
_translationsRepository = translationsRepository;
}
[HttpPost]
public ActionResult Translations(TranslationsViewModel translationsViewModel)
{
var translations = _translationsRepository.Table.SingleOrDefault();
translations.ProductName = translationsViewModel.ProductName;
translations.ProductDescription = translationsViewModel.ProductDescription;
_translationsRepository.Update(translations);
_translationsRepository.Flush();
}
ve burada NHibernate "düzeltme" var: Burada
Güncelleme için çalışıyorum nasıl
biraz kludgey görünüyorvar session = _sessionLocator.For(typeof(TranslationsPartRecord));
var translations = _translationsRepository.Table.SingleOrDefault();
// is translations.Id always 1?
var dbTranslations = session.Get<TranslationsPartRecord>(translations.Id);
dbTranslations.ProductName = translationsViewModel.ProductName;
dbTranslations.ProductDescription = translationsViewModel.ProductDescription;
session.Update(dbTranslations);
session.Flush();
...
Şerefe. ben hala daha test ettikten sonra Orchard 1.3.9
pps koşuyorum
ps NHibernate düzeltme belkide benim ilk bulgular, kırmızı ringa vardı şimdi çalışmayı durdurdu. Bu içerik bölümündeki yeni özellikler güncellenirken/alınırken NHibernate tarafından tamamen göz ardı ediliyormuş gibi görünüyor - nesne tanımı bir yerde önbelleğe alınmış gibi ...
Bu bilgi için teşekkürler, eşlemelerin burada devam ettiğini fark etmediniz. Bu dosyayı silmek, daha sonra modülün devre dışı bırakılması/devre dışı bırakılması hile yaptı, buna ikna olmadığına inanıyorum çünkü aradığım cevap :) Ben sadece Orchard sürecini böyle yaparak halledeyim mi diye merak ediyorum. –
Bu aynı sorunla karşılaştığımı ve çözümün işe yaradığını buldum, ancak tıpkı @MikeSimmons gibi, bu yöntemin bunu başarmak için garip bir yol olduğunu düşünüyorum. Bu gerçekten en iyi yöntem mi? FYI - Orchard 1.6 kullanıyorum. – bigmac
Orchard 1'i çalıştırıyorum.10 ve 'ContentPart'ma bir özellik ekledim ve eşleme dosyasını da silmek zorunda kaldım. Bu bir endişe, çünkü modülümü serbest bırakmak istiyorum ve bu da yükseltmeleri zorlaştırıyor. – hsimah