मैं एक बहु किरायेदार आवेदन लिख रहा हूं। लगभग सभी तालिकाओं में यह निर्दिष्ट करने के लिए "खाता आईडी" है कि कौन से किरायेदार के पास रिकॉर्ड है। मेरे पास एक सारणी है जिसमें "विक्रेताओं" की एक सूची है जो सभी किरायेदारों के पास पहुंच है, इसमें खाता आईडी नहीं है।इकाई फ्रेमवर्क मल्टी टेनेंट अनुकूलित तालिका
कुछ किरायेदार एक विक्रेता रिकॉर्ड पर कस्टम फ़ील्ड जोड़ना चाहते हैं।
मैं इसे कोड प्रथम इकाई फ्रेमवर्क में कैसे सेट अप करूं? यह अब तक मेरा समाधान है लेकिन मुझे सभी पसंदीदा विक्रेताओं को लाने की ज़रूरत है क्योंकि मैं ईएफ में उप-क्वेरी नहीं लिख सकता हूं और फिर जब मैं रिकॉर्ड अपडेट करता हूं, तो हटाए जा रहे हैं।
public class Vendor
{
public int Id { get;set;}
public string Name { get; set; }
}
public class TenantVendor
{
public int AccountId { get;set;}
public int VendorId{ get;set;}
public string NickName { get; set; }
}
// query
// how do I only get single vendor for tenant?
var vendor = await DbContext.Vendors
.Include(x => x.TenantVendors)
.SingleAsync(x => x.Id == vendorId);
// now filter tenant's favorite vendor
// problem: if I update this record later, it deletes all records != account.Id
vendor.TenantVendors= vendor.FavoriteVendors
.Where(x => x.AccountId == _account.Id)
.ToList();
मुझे पता है कि मुझे एक बहु-कॉलम विदेशी कुंजी का उपयोग करने की आवश्यकता है, लेकिन मुझे इसे स्थापित करने में समस्या हो रही है।
स्कीमा .. ऐसा दिखाई देगा
Vendor
Id
FavVendor
VendorId
AccountId
CustomField1
तब मैं विक्रेता क्वेरी कर सकता है, खाते में लॉग इन के लिए FavVendor हो और मेरी प्रमुदित रास्ते पर चलते हैं।
मेरे वर्तमान समाधान है, जो मुझे एक अतिरिक्त "VENDOR_ID" विदेशी कुंजी देता है, लेकिन यह निर्धारित नहीं करता है ठीक से
यह संभव हो जाना चाहिए "एक करने के लिए एक" संबंध स्थापित करने और विदेशी महत्वपूर्ण हो होने से "विक्रेता आईडी" और "खाता क्रमांक"
अब इकाई ढांचे में इस स्थापना का प्रयास कर रहे ...
public class Vendor
{
public int Id { get; set; }
public string Name { get; set; }
public virtual FavVendor FavVendor { get; set; }
}
public class FavVendor
{
public string NickName { get; set; }
[Key, Column(Order = 0)]
public int VendorId { get; set; }
public Vendor Vendor { get; set; }
[Key, Column(Order = 1)]
public int AccountId { get; set; }
public Account Account { get; set; }
}
// query to get data
var dbVendorQuery = dbContext.Vendors
.Include(x => x.FavVendor)
.Where(x => x.FavVendor == null || x.FavVendor.AccountId == _account.Id) ;
// insert record
if (dbVendor.FavVendor == null)
{
dbVendor.FavVendor = new FavVendor()
{
Account = _account,
};
}
dbVendor.FavVendor.NickName = nickName;
dbContext.SaveChanges();
इसके अलावा निम्न त्रुटि प्राप्त जब मैं कोशिश करते हैं और FavVendor.Vendor
पर विदेशी कुंजी सेटFavVendor_Vendor_Source: बहुलता रिश्ते में भूमिका 'FavVendor_Vendor_Source' 'FavVendor_Vendor' में मान्य नहीं है। क्योंकि निर्भर भूमिका गुण प्रमुख गुण नहीं हैं, निर्भर भूमिका की बहुतायत की ऊपरी सीमा '*' होना चाहिए।