2015-09-16 16 views
5

ile çalışıyorum. EF tarafından üretilen Şirket adı verilen kısmi bir sınıfım var. gibi kısmi sınıf görünür:Türetilmiş türüne öznitelikleri ekleme

tip 'BaseModels.Company' zaten 'CompanyName'" için bir tanım içeriyor Ne yapmak istiyorum Company'den türetilmiş bir sınıf oluşturmaktır

public partial class Company { 
    public string CompanyId { get; set; } 
    public string CompanyName { get; set; } 
} 

o

public class MyCompany : Company { 
    public string UploadName { get; set; } 
} 

. ekstra bir özelliği vardır Ama özel bir özellik baz tipi mülkiyet CompanyName dekore etmek istiyorum.

Ben aşağıdaki konuma gitti: How do I add an attribute to the field of the base class from child class?

soruma cevap vermez hangisi. Sorun, "Class" alt sınıfında CompanyName özelliğini işaretlediysem, EF malzememi geçersiz kılacak kodu yeniden oluşturabilir.

Ben kısmi sınıfını tanımlamak için çalıştı, ama ben eklemek çalıştığında VS 2013 şikayetçi:

public partial class Company { 
    [Renderer("html")] 
    public virtual string CompanyName { get; set; } 
} 

özellik adı zaten var olduğunu belirterek.

Bu engelden nasıl kurtulurum?

+0

'Ne VS2013 şikayet yok ???' .. Ayrıca bunu geçersiz kılma nerede çocuk sınıfı ..? – MethodMan

+0

Visual Studio'dan oluşturulan hata iletisi, "'BaseModels.Company' türü zaten 'CompanyName' için bir tanım içerir" diyor. Bu, aynı projede tanımlamaya çalıştığım kısmi bir sınıftan. – coson

+0

bu EF Veri Tabanı İlkesi mi? eğer öyleyse, adım adım http://stackoverflow.com/questions/19021991/entity-framework-database-first-how-to-alter-entities-to-make-them-derive-from okumak için bir bağlantı varsa -a – MethodMan

cevap

1

Zaten var olan kısmi sınıf tanımlama özelliğini kullanamazsınız. MetadataTypeAttribute'yi kullanmanız için gereken mülkün üzerine özellik eklersiniz.

[MetadataType(typeof(CompanyMetadata))] 
public partial class Company { } 

ve istenen özelliği olan mülkünüzle projenize meta sınıfını ekleyin: kısmi sınıf oluşturun

public class CompanyMetadata 
{ 
    [Renderer("html")] 
    public string CompanyName { get; set; } 
} 
0

Şirket'i soyut bir sınıf haline getirin. Ardından, özel özelliği eklemek için CompanyName ile anahtar kelime geçersiz kılma özelliğini kullanın. Ayrıca UploadName ekleyebilirsiniz.

+0

Ancak Şirket sınıfı, Entity Framework tarafından oluşturulur. Sorunu nasıl çözeceğinden emin değilim. – coson