11

से एंटीटी फ्रेमवर्क मॉडल जेनरेट करें मैं डेटाबेस-प्रथम मॉडल के साथ ईएफ 5 का उपयोग कर रहा हूं। और एक अनुप्रयोग के एसक्यूएल सर्वर डेटाबेस स्कीमा को बनाए रखने के लिए दृश्य विजुअल स्टूडियो में एक डेटाबेस प्रोजेक्ट।विजुअल स्टूडियो डेटाबेस प्रोजेक्ट

एफई मॉडल, मैं एक खाली डेटाबेस में परिवर्तन की तैनाती कर रहा हूँ ...

क्या यह संभव है पैदा करते हैं और एक दृश्य स्टूडियो (2012) डेटाबेस प्रोजेक्ट से एफई मॉडल अपडेट करने के अद्यतन करने के लिए?

अद्यतन: इसके अलावा यह एक dacpac फ़ाइल से उत्पन्न एक बहुत बुरा नहीं विकल्प है। क्या यह संभव है?

अद्यतन: एमएस बिल्ड 2014 सम्मेलन में, ADO.NET टीम ने सुझाव दिया कि एफई से भविष्य विज्ञप्ति, EF7 की तरह, सिर्फ कोड पहले दृष्टिकोण के साथ काम करेंगे।

बाद में, वे नए दृष्टिकोण के नाम स्पष्ट संहिता सबसे पहले, नहीं होना चाहिए कोड आधार मॉडलिंग के बावजूद। शायद बिल्कुल वही नहीं है लेकिन as far as I read इसके बारे में quite similar to me लगता है।

तो मैं @ adam0101 समाधान की कोशिश करने जा रहा हूँ। कोडफिसर्ट के साथ समाप्त होने वाला कोई अन्य प्रस्तावित समाधान एसएसडीटी प्रोजेक्ट से ईएफ की कोडफिसर्ट प्रोजेक्ट में माइग्रेट करता है, और जो मैं चाहता हूं वह दोनों की एक चिकनी सहअस्तित्व है (शायद मैं एक सपने देखने वाला हूं ...)।

+0

इकाई की रूपरेखा के बारे में क्या संस्करण? –

+1

मेरा मानना ​​है कि एफई विद्युत उपकरण रिवर्स एक सुविधा के रूप में एक डेटाबेस इंजीनियरिंग है http://visualstudiogallery.msdn.microsoft.com/72a60b14-1581-4b9b-89f2-846072eff19d – millimoose

+0

@millimoose: एफई विद्युत उपकरण का पता नहीं डेटाबेस परियोजनाओं। –

उत्तर

1

मैं परियोजना SqlSharpener जो कि तुम क्या कह रहे हैं ऐसा करने में सक्षम होना चाहिए बनाया।

उदाहरण के लिए, इन तालिकाओं एक SSDT परियोजना में परिभाषित दिया:

CREATE TABLE [dbo].[Tasks] 
(
    [Id] INT NOT NULL PRIMARY KEY IDENTITY, 
    [Name] VARCHAR(50) NOT NULL, 
    [Description] VARCHAR(1000) NOT NULL, 
    [TaskStatusId] INT NOT NULL, 
    [Created] DATETIME NOT NULL , 
    [CreatedBy] VARCHAR(50) NOT NULL, 
    [Updated] DATETIME NOT NULL, 
    [UpdatedBy] VARCHAR(50) NOT NULL, 
    CONSTRAINT [FK_Tasks_ToTaskStatus] FOREIGN KEY ([TaskStatusId]) REFERENCES [TaskStatus]([Id]) 
) 

CREATE TABLE [dbo].[TaskStatus] 
(
    [Id] INT NOT NULL PRIMARY KEY, 
    [Name] VARCHAR(50) NOT NULL 
) 

आप एक टी -4 टेम्पलेट है कि इस तरह के रूप में संस्थाओं उत्पन्न होगा बना सकते हैं:

using System; 
using System.Collections.Generic; 
using System.ComponentModel.DataAnnotations; 
using System.ComponentModel.DataAnnotations.Schema; 
using System.Data.Entity; 

namespace SimpleExample.EntityFrameworkCodeFirst 
{ 
    public partial class TaskContext : DbContext 
    { 
     public TaskContext(): base() 
     { 
     } 
     public DbSet<Tasks> Tasks { get; set; } 
     public DbSet<TaskStatus> TaskStatus { get; set; } 
    } 


    [Table("Tasks")] 
    public partial class Tasks 
    { 

     [Key] 
     [Required] 
     [DatabaseGenerated(DatabaseGeneratedOption.Identity)] 
     public Int32? Id { get; set; } 

     [Required] 
     [MaxLength(50)] 
     public String Name { get; set; } 

     [Required] 
     [MaxLength(1000)] 
     public String Description { get; set; } 

     [Required] 
     public Int32? TaskStatusId { get; set; } 
     [ForeignKey("Id")] 
     public virtual TaskStatus TaskStatus { get; set; } 

     [Required] 
     public DateTime? Created { get; set; } 

     [Required] 
     [MaxLength(50)] 
     public String CreatedBy { get; set; } 

     [Required] 
     public DateTime? Updated { get; set; } 

     [Required] 
     [MaxLength(50)] 
     public String UpdatedBy { get; set; } 
    } 

    [Table("TaskStatus")] 
    public partial class TaskStatus 
    { 

     [Key] 
     [Required] 
     public Int32? Id { get; set; } 
     public virtual ICollection<Tasks> Tasks { get; set; } 

     [Required] 
     [MaxLength(50)] 
     public String Name { get; set; } 
    } 
} 

इस का एक working example नहीं है simple example solution में टी 4 टेम्पलेट। अगर वहाँ एक उपयोग के मामले कि SqlSharpener वर्तमान में हैंडल नहीं करता है, add an issue के लिए स्वतंत्र महसूस और मैं अगर मैं में जोड़ सकते हैं देखेंगे।

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