18

मैं अपना पहला एमवीसी 5/इकाई फ्रेमवर्क एप्लिकेशन बना रहा हूं। मैंने मौजूदा SQL सर्वर से अपने डेटा को खींचने के लिए डेटाबेस को पहली विधि का उपयोग किया। मौजूदा SQL डेटाबेस को इसका डेटा एक अलग वेब फॉर्म .net एप्लिकेशन से प्राप्त होता है।मौजूदा डेटाबेस के अंदर ASP.Net पहचान तालिका कैसे बनाएं?

आगे बढ़ते हुए, नया एमवीसी एप्लिकेशन और मौजूदा वेब फॉर्म एप्लिकेशन डेटाबेस साझा करेंगे।

मैं एमवीसी अनुप्रयोग के भीतर उपयोगकर्ता खाते बनाने के लिए पहचान का उपयोग कर रहा हूं। तो इस बिंदु पर, मेरे एमवीसी अनुप्रयोग में मेरे पास 2 डेटा कनेक्शन हैं। उपयोगकर्ता खातों के लिए और दूसरा मौजूदा SQL सर्वर के लिए।

क्या यह एमवीसी परियोजना स्थापित करने का सबसे अच्छा तरीका है? आगे बढ़ते हुए, क्या मैं वेब फॉर्म एप्लिकेशन से उपयोगकर्ता डेटाबेस तक पहुंच सकता हूं?

मैं एक नौसिखिया हूं, और मैं यह सुनिश्चित करना चाहता हूं कि मैं इसे सही तरीके से स्थापित कर रहा हूं।

+0

वेब फॉर्म पहचान का उपयोग कर सकते हैं। एक नया वेब फॉर्म प्रोजेक्ट बनाने के लिए VS2013 का उपयोग करें और सुनिश्चित करें कि "व्यक्तिगत खाते" की जांच की गई है। हालांकि इसका लाभ उठाने के लिए आपको .NET 4.5 में अपग्रेड करना पड़ सकता है। – mason

+0

आप मौजूदा डेटाबेस के अंदर एएसपी.Net पहचान तालिकाओं को रख सकते हैं - [मौजूदा डेटाबेस में एएसपी.नेट एमवीसी 5 पहचान प्रमाणीकरण कैसे जोड़ें] (http://stackoverflow.com/a/25651908/296861) – Win

+0

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

उत्तर

12

क्या उपयोगकर्ता तालिका मौजूदा SQL सर्वर में जोड़ा जाएगा, या है इस उपयोगकर्ता डेटाबेस एक पूरी तरह से अलग डेटाबेस?

आपको दो डेटाबेस की आवश्यकता नहीं है - आप अपने मौजूदा डेटाबेस के अंदर पहचान तालिका बना सकते हैं।

एएसपी.Net पहचान इकाई फ्रेमवर्क कोड पहले का उपयोग करता है। इसलिए, पहली बार अपना एप्लिकेशन चलाने से पहले, आप कनेक्शन स्ट्रिंग को मौजूदा डेटाबेस के समान अपडेट करना चाहते हैं जो आम तौर पर एप्लिकेशन डीबीकॉन्टेक्स्ट के अंदर है।

enter image description here

आप पहले से ही दो अलग-अलग डेटाबेस है और उन्हें मर्ज करना चाहते हैं, तो आप इस तरह के Redgate के रूप में उपकरणों का उपयोग करना चाहते हैं - एसक्यूएल की तुलना करें और डाटा की तुलना करें।

दो डेटाबेस विलय करना पूरी तरह से मूल प्रश्न से बाहर है; अगर आपके पास एक अलग सवाल है तो कृपया एक अलग प्रश्न बनाएं।

0

डीबी के साथ, कनेक्शन स्ट्रिंग को बदलने से पहचान 2.0 को डीबी में टेबल बनाने के लिए नहीं जा रहा है।

सुधार: मैं मूल रूप से एक पहचान स्कीमा के तहत डीबी में मेरी पहचान टेबल था और जब मैं नीचे का उपयोग कर नए उपयोगकर्ताओं पंजीकृत, नई टेबल dbo स्कीमा के तहत मेरी DB में लिखा गया था।

आपको कोड फर्स्ट का उपयोग करके पहले एक डमी प्रोजेक्ट बनाना है, प्रोजेक्ट बनाना और चलाएं, अपने वेब ब्राउजर में अब चल रहे ऐप पर जाएं, उपयोगकर्ता को डमी ईमेल और पासवर्ड से पंजीकृत करें, इससे एंटिटी फ्रेमवर्क कोड पहले होगा (?) अपने डमी डेटाबेस में सभी पहचान 2.0 डीबी टेबल बनाने के लिए। फिर आप डमी टेबल को SQL स्क्रिप्ट में निर्यात करना चाहते हैं और उन्हें अपने मौजूदा डीबी में आयात करना चाहते हैं, जिसे आप इनका उपयोग करना चाहते हैं। 5 टेबल होना चाहिए: AspNetUserRoles, AspNetRoles, AspNetUsers, AspNetUserClaims, और AspNetUserLogins।

मेरे पास मेरे मुख्य डीबी मॉडल के लिए एक एडीओ.Net इकाई मॉडल (.edmx फ़ाइल) है और पहचान मॉडल के लिए एक और .edmx बनाया है (मैंने नाम: पहचान डीबीएनटीटीएस)।

public class ApplicationDbContext : IdentityDbContext<ApplicationUser> 
    { 
     public ApplicationDbContext() 
      : base("IdentityDbEntitiesString", throwIfV1Schema: false) 
     { 
     } 

बहुत महत्वपूर्ण:: अपने वेब में है कि जब आप "DefaultConnection" से कनेक्शन स्ट्रिंग बदलना चाहिए है।कॉन्फ़िगरेशन फ़ाइल, आपको एक अतिरिक्त कनेक्शन स्ट्रिंग जोड़नी होगी जिसका आप ऊपर उपयोग करेंगे। की तरह (मैं एक एसक्यूएल सर्वर देव वातावरण का उपयोग कर रहा है, तो अपने कनेक्शन तार को बदल सकता है) लगता है:

<connectionStrings> 
    <add name="IdentityDbEntitiesString" 
    connectionString="Data Source=#MyServerAddress#; 
     Initial Catalog=#DbName#; 
     Integrated Security=SSPI;" 
    providerName="System.Data.SqlClient" /> 
    <add name="IdentityDbEntities" 
    connectionString="metadata=res://*/Models.IdentityModel.csdl| 
     res://*/Models.IdentityModel.ssdl| 
     res://*/Models.IdentityModel.msl; 
    provider=System.Data.SqlClient; 
    provider connection string=&quot; 
    data source=#MyServerAddress#; 
    initial catalog=#DbName#; 
    integrated security=True;multipleactiveresultsets=True; 
    application name=EntityFramework&quot;" 
    providerName="System.Data.EntityClient" />   </connectionStrings> 

कुछ भी अंदर # की तरह # DBNAME # आप के लिए कस्टम हो जाएगा।

2

डेटाबेस पर इस SQL ​​स्क्रिप्ट को चलाएं।

/****** Object: Table [dbo].[AspNetRoles] Script Date: 15-Mar-17 10:27:06 PM ******/ 

SET ANSI_NULLS ON 

GO 

SET QUOTED_IDENTIFIER ON 

GO 

CREATE TABLE [dbo].[AspNetRoles](

    [Id] [nvarchar](128) NOT NULL, 

    [Name] [nvarchar](256) NOT NULL, 

CONSTRAINT [PK_dbo.AspNetRoles] PRIMARY KEY CLUSTERED 

(

    [Id] ASC 

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] 

) ON [PRIMARY] 



GO 

/****** Object: Table [dbo].[AspNetUserClaims] Script Date: 15-Mar-17 10:27:06 PM ******/ 

SET ANSI_NULLS ON 

GO 

SET QUOTED_IDENTIFIER ON 

GO 

CREATE TABLE [dbo].[AspNetUserClaims](

    [Id] [int] IDENTITY(1,1) NOT NULL, 

    [UserId] [nvarchar](128) NOT NULL, 

    [ClaimType] [nvarchar](max) NULL, 

    [ClaimValue] [nvarchar](max) NULL, 

CONSTRAINT [PK_dbo.AspNetUserClaims] PRIMARY KEY CLUSTERED 

(

    [Id] ASC 

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] 

) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] 



GO 

/****** Object: Table [dbo].[AspNetUserLogins] Script Date: 15-Mar-17 10:27:06 PM ******/ 

SET ANSI_NULLS ON 

GO 

SET QUOTED_IDENTIFIER ON 

GO 

CREATE TABLE [dbo].[AspNetUserLogins](

    [LoginProvider] [nvarchar](128) NOT NULL, 

    [ProviderKey] [nvarchar](128) NOT NULL, 

    [UserId] [nvarchar](128) NOT NULL, 

CONSTRAINT [PK_dbo.AspNetUserLogins] PRIMARY KEY CLUSTERED 

(

    [LoginProvider] ASC, 

    [ProviderKey] ASC, 

    [UserId] ASC 

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] 

) ON [PRIMARY] 



GO 

/****** Object: Table [dbo].[AspNetUserRoles] Script Date: 15-Mar-17 10:27:06 PM ******/ 

SET ANSI_NULLS ON 

GO 

SET QUOTED_IDENTIFIER ON 

GO 

CREATE TABLE [dbo].[AspNetUserRoles](

    [UserId] [nvarchar](128) NOT NULL, 

    [RoleId] [nvarchar](128) NOT NULL, 

CONSTRAINT [PK_dbo.AspNetUserRoles] PRIMARY KEY CLUSTERED 

(

    [UserId] ASC, 

    [RoleId] ASC 

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] 

) ON [PRIMARY] 



GO 

/****** Object: Table [dbo].[AspNetUsers] Script Date: 15-Mar-17 10:27:06 PM ******/ 

SET ANSI_NULLS ON 

GO 

SET QUOTED_IDENTIFIER ON 

GO 

CREATE TABLE [dbo].[AspNetUsers](

    [Id] [nvarchar](128) NOT NULL, 

    [Email] [nvarchar](256) NULL, 

    [EmailConfirmed] [bit] NOT NULL, 

    [PasswordHash] [nvarchar](max) NULL, 

    [SecurityStamp] [nvarchar](max) NULL, 

    [PhoneNumber] [nvarchar](max) NULL, 

    [PhoneNumberConfirmed] [bit] NOT NULL, 

    [TwoFactorEnabled] [bit] NOT NULL, 

    [LockoutEndDateUtc] [datetime] NULL, 

    [LockoutEnabled] [bit] NOT NULL, 

    [AccessFailedCount] [int] NOT NULL, 

    [UserName] [nvarchar](256) NOT NULL, 

CONSTRAINT [PK_dbo.AspNetUsers] PRIMARY KEY CLUSTERED 

(

    [Id] ASC 

)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] 

) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] 



GO 

ALTER TABLE [dbo].[AspNetUserClaims] WITH CHECK ADD CONSTRAINT [FK_dbo.AspNetUserClaims_dbo.AspNetUsers_UserId] FOREIGN KEY([UserId]) 

REFERENCES [dbo].[AspNetUsers] ([Id]) 

ON DELETE CASCADE 

GO 

ALTER TABLE [dbo].[AspNetUserClaims] CHECK CONSTRAINT [FK_dbo.AspNetUserClaims_dbo.AspNetUsers_UserId] 

GO 

ALTER TABLE [dbo].[AspNetUserLogins] WITH CHECK ADD CONSTRAINT [FK_dbo.AspNetUserLogins_dbo.AspNetUsers_UserId] FOREIGN KEY([UserId]) 

REFERENCES [dbo].[AspNetUsers] ([Id]) 

ON DELETE CASCADE 

GO 

ALTER TABLE [dbo].[AspNetUserLogins] CHECK CONSTRAINT [FK_dbo.AspNetUserLogins_dbo.AspNetUsers_UserId] 

GO 

ALTER TABLE [dbo].[AspNetUserRoles] WITH CHECK ADD CONSTRAINT [FK_dbo.AspNetUserRoles_dbo.AspNetRoles_RoleId] FOREIGN KEY([RoleId]) 

REFERENCES [dbo].[AspNetRoles] ([Id]) 

ON DELETE CASCADE 

GO 

ALTER TABLE [dbo].[AspNetUserRoles] CHECK CONSTRAINT [FK_dbo.AspNetUserRoles_dbo.AspNetRoles_RoleId] 

GO 

ALTER TABLE [dbo].[AspNetUserRoles] WITH CHECK ADD CONSTRAINT [FK_dbo.AspNetUserRoles_dbo.AspNetUsers_UserId] FOREIGN KEY([UserId]) 

REFERENCES [dbo].[AspNetUsers] ([Id]) 

ON DELETE CASCADE 

GO 

ALTER TABLE [dbo].[AspNetUserRoles] CHECK CONSTRAINT [FK_dbo.AspNetUserRoles_dbo.AspNetUsers_UserId] 

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