मैं एंटिटी फ्रेमवर्क 6 का उपयोग कर रहा हूं और मुझे किसी इकाई के गुणों को अपडेट करने की आवश्यकता है।ईएफ में एंटिटी प्रॉपर्टी अपडेट करें जहां संपत्ति एक और इकाई है
मैं निम्नलिखित संस्थाओं है
_repository.Update<File>(file, x => x.Data, x => x.Mime, x => x.Updated);
भंडार विधि पीछा कर रहा है:
public void Update<T>(T entity,
params Expression<Func<T, Object>>[] properties)
where T : class
{
_context.Set<T>().Attach(entity);
foreach (var property in properties)
{
MemberExpression expression =
property.Body is MemberExpression ?
(MemberExpression)property.Body :
(MemberExpression)(((UnaryExpression)property.Body)
.Operand);
_context.Entry<T>(entity)
.Property(expression.Member.Name).IsModified = true;
}
}
यह Data
और के लिए ठीक काम करता है
public class File
{
public Int32 Id { get; set; }
public Byte Data { get; set; }
public DateTime Updated { get; set; }
public virtual Mime Mime { get; set; }
}
public class Mime
{
public Int32 Id { get; set; }
public String Name { get; set; }
public virtual ICollection<File> Files { get; set; }
}
तो मैं निम्नलिखित इस्तेमाल किया अद्यतन गुण लेकिन Mime
के लिए नहीं। मुझे त्रुटि मिलती है:
The property 'Mime' on type 'File' is not a primitive or complex property. The Property method can only be used with primitive or complex properties. Use the Reference or Collection method.
क्या यह काम करना संभव है और इसे मेरे भंडार विधि पर एकीकृत करना संभव है?
पहला सवाल यह है: आपके पास यह विस्तृत 'अपडेट' विधि क्यों है? संशोधित गुणों को चिह्नित करने के लिए आप इसे ईएफ के परिवर्तन ट्रैकर पर क्यों नहीं छोड़ सकते? बड़ी तस्वीर क्या है? –
फ़ाइल इकाई में एक संपत्ति डेटा है जो कि बहुत बड़ा हो सकता है क्योंकि इसमें फ़ाइल है ... इसलिए मैं डेटा को स्मृति में लोड किए बिना कुछ फ़ील्ड अपडेट करना चाहता हूं। इसका कोई मतलब भी है क्या? यह तब काम करता था जब मेरे पास उससे संबंधित संस्थाएं नहीं होतीं। –
आपको * टेबल विभाजन * पर एक नज़र रखना चाहिए। –