2011-03-17 16 views
6

मैं एक एसक्यूएल सर्वर 2005 उदाहरण के साथ इकाई फ्रेमवर्क 4.1 आरसी का उपयोग करने की कोशिश कर रहा हूं। मैंने एक खाली डेटाबेस बनाया है और मैं इसे अपने पॉको ऑब्जेक्ट्स को जारी रखना चाहता हूं। मेरे POCO लगता है:इकाई फ्रेमवर्क 4.1 कोड पहले एसक्यूएल सर्वर 2005 से कनेक्ट हो रहा है

public class Cart 
{ 
    public Cart() 
    { 
     this.CartId = Guid.NewGuid(); 

    } 

    public Guid CartId { get; set; } 
    public decimal TotalCost { get; set; } 
    public decimal SubTotalCost { get; set; } 
    public decimal Tax { get; set; } 
    public decimal EstimatedShippingCost { get; set; } 
} 

मेरे CartContext है:

public class CartContext : DbContext 
{ 
    public DbSet<Cart> Carts { get; set; } 
    public DbSet<Attribute> Attributes { get; set; } 
    public DbSet<AttributeItem> AttributeItems { get; set; } 
} 

मैं एक कनेक्शन स्ट्रिंग है:

<add name="CartContext" connectionString="Server=myserver.mynetwork.net;User ID=MyUser;Pwd=mypassword;Initial Catalog=ExistingDb" providerName="System.Data.SqlClient" \> 

जब मैं कोशिश करते हैं और संदर्भ के लिए एक वस्तु जोड़ने और इसे मैं बचाने प्राप्त करें:

सिस्टम। डेटा.इन्टिटी.इफ्रास्ट्रक्चर। डीबीअपडेटएक्स ception: प्रविष्टियों को अद्यतन करते समय एक त्रुटि हुई। विवरण के लिए आंतरिक अपवाद देखें। ---> System.Data.UpdateException: प्रविष्टियों को अद्यतन करते समय एक त्रुटि हुई। विवरण के लिए आंतरिक अपवाद देखें। ---> System.Data.SqlClient.SqlException: अमान्य ऑब्जेक्ट नाम 'dbo.Carts'।

SELECT TOP (1) 
[Extent1].[Id] AS [Id], 
[Extent1].[ModelHash] AS [ModelHash] 
FROM [dbo].[EdmMetadata] AS [Extent1] 
ORDER BY [Extent1].[Id] DESC 

तब मेरे गाड़ी ऑब्जेक्ट सम्मिलित करने का प्रयास:

अगर मैं डेटाबेस प्रोफ़ाइल मैं देख सकता हूँ उपयोगकर्ता कनेक्ट, sys.tables में डेटाबेस के लिए देखो इस क्वेरी चलाते हैं। यह गाड़ियां टेबल बनाने की कोशिश नहीं करता है। मुझे लगता है कि कनेक्शन स्ट्रिंग के साथ कुछ गड़बड़ है, लेकिन मुझे यह कैसे करना है इस पर कहीं भी उदाहरण नहीं मिल सकते हैं।

+0

अपने कनेक्शन स्ट्रिंग को बंद करने में आप एक बैकस्लैश मिल गया है लेकिन यह एक होना चाहिए आगे स्लैश यानी>> नहीं \> –

उत्तर

8

डीबीकॉन्टेक्स्ट टेबल नहीं बनाएगा क्योंकि यह अस्तित्व में नहीं है। एक बार जब आप मौजूदा डेटाबेस का उपयोग कर रहे हैं तो आपको मैन्युअल रूप से टेबल बनाना होगा या कस्टम प्रारंभकर्ता बनाना होगा। डिफ़ॉल्ट प्रारंभकर्ता केवल डेटाबेस छोड़ने और सभी आवश्यक तालिकाओं के साथ नया बनाने में सक्षम हैं।

आप उदाहरण के कॉल के लिए कर सकते हैं:

context.Database.Delete(); 
context.Database.Create(); 

या:

context.Database.CreateIfNotExists(); 

या:

Database.SetInitializer(new DropCreateDatabaseIfModelChanges<MyContext>()); 
// You don't need to call this. Initialization takes place anyway if context 
// needs it but you can enforce initialization for example in the application 
// startup instead of before the first database operation 
context.Database.Initialize(true); 
+0

ग्रेट उत्तर, धन्यवाद। दुर्भाग्य से यह इस समय हमारे लिए काम नहीं करेगा क्योंकि हमारे पास एक मौजूदा योजना है जिसे मैं जोड़ना चाहता हूं। DropCreateDatabaseIfModelChanges <> उस मौजूदा योजना को छोड़ने जा रहा है जो बुरी खबर है! उन्होंने पूरे डेटाबेस के बजाय स्कीमा स्तर पर इसे लागू नहीं किया। मुझे पहले कोड का उपयोग करना अच्छा लगता है, यह बहुत अच्छा है। जवाब मुझे लगता है कि अपना खुद का प्रारंभिक लिखना होगा। –

संबंधित मुद्दे