EF ডেটাবেস প্রথম এমভিসি 5 এর সাথে এএসপি.নেট পরিচয়


88

ডেটাবেস ফার্স্ট এবং ইডিএমএক্সের সাহায্যে নতুন এএসপিএন পরিচয় ব্যবহার করা সম্ভব? নাকি শুধুমাত্র কোড দিয়ে প্রথমে?

আমি যা করেছি তা এখানে:

1) আমি একটি নতুন এমভিসি 5 প্রকল্প তৈরি করেছি এবং নতুন পরিচয়টি আমার ডাটাবেজে নতুন ব্যবহারকারী এবং ভূমিকা সারণী তৈরি করেছিলাম।

2) আমি তখন আমার ডাটাবেস ফার্স্ট EDMX ফাইলটি খুললাম এবং নতুন পরিচয় ব্যবহারকারীদের টেবিলটিতে টেনে আনলাম যেহেতু আমার সাথে এটি সম্পর্কিত অন্যান্য সারণী রয়েছে।

3) EDMX সংরক্ষণ করার পরে, ডাটাবেস প্রথম POCO জেনারেটর স্বয়ংক্রিয়ভাবে একটি ব্যবহারকারী শ্রেণি তৈরি করবে। তবে ইউজারম্যানেজার এবং রোলম্যানেজার প্রত্যাশা করে যে কোনও ব্যবহারকারী শ্রেণি নতুন আইডেন্টিটি নেমস্পেস (মাইক্রোসফট.এএসপনেট.আইডেন্টিটি.আইউজার) থেকে উত্তরাধিকার সূত্রে প্রাপ্ত, সুতরাং পোকো ব্যবহারকারী শ্রেণিটি ব্যবহার করা কার্যকর হবে না।

আমি অনুমান করি যে কোনও সম্ভাব্য সমাধানটি হ'ল আমার পোকো জেনারেশন ক্লাসগুলি সম্পাদনা করে আমার ব্যবহারকারী শ্রেণি আইইউসার থেকে উত্তরাধিকার পেতে পারে?

বা এএসপি.এনইটি পরিচয়টি কেবল কোড ফার্স্ট ডিজাইনের সাথেই সামঞ্জস্যপূর্ণ?

++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++

আপডেট: নীচে অ্যান্ডারস হাবেলের পরামর্শ অনুসরণ করে, আমি এটি করেছি। এটি কাজ করে তবে আমি ভাবছি যে এর থেকে আরও মার্জিত সমাধান আছে কিনা।

1) আমি আমার অটো উত্পন্ন সংস্থাগুলির মতো একই নেমস্পেসের মধ্যে একটি আংশিক বর্গ তৈরি করে আমার সত্তা ব্যবহারকারী শ্রেণি প্রসারিত করেছি।

namespace MVC5.DBFirst.Entity
{
    public partial class AspNetUser : IdentityUser
    {
    }
}

2) আমি আমার ডেটা কনটেক্সটকে ডিবিসিওন্টেক্সটের পরিবর্তে আইডেন্টিটি ডিবিসিএনটেক্সট থেকে উত্তরাধিকার হিসাবে পরিবর্তন করেছি। মনে রাখবেন যে প্রতিবার আপনি আপনার EDMX আপডেট করবেন এবং DBContext এবং সত্তা শ্রেণি পুনরায় তৈরি করবেন, আপনাকে এটিকে আবার সেট করতে হবে।

 public partial class MVC5Test_DBEntities : IdentityDbContext<AspNetUser>  //DbContext

3) আপনার অটো উত্পন্ন ব্যবহারকারী সত্তা শ্রেণীর মধ্যে, আপনাকে অবশ্যই নিম্নলিখিত 4 ক্ষেত্রগুলিতে ওভাররাইড কীওয়ার্ড যুক্ত করতে হবে বা এই ক্ষেত্রগুলিকে আইডেন্টিউজারের উত্তরাধিকার সূত্রে প্রাপ্ত বলে মন্তব্য করতে হবে (পদক্ষেপ 1)। মনে রাখবেন যে প্রতিবার আপনি আপনার EDMX আপডেট করবেন এবং DBContext এবং সত্তা শ্রেণি পুনরায় তৈরি করবেন, আপনাকে এটিকে আবার সেট করতে হবে।

    override public string Id { get; set; }
    override public string UserName { get; set; }
    override public string PasswordHash { get; set; }
    override public string SecurityStamp { get; set; }

4
আপনার প্রয়োগের নমুনা কোড রয়েছে কি? যেমন আমি যখন উপরের প্রতিলিপি তৈরির চেষ্টা করি তখনই আমি একটি ত্রুটি পেয়েছি যখন আমি কোনও ব্যবহারকারীকে লগইন বা নিবন্ধন করার চেষ্টা করি। "অ্যাস্পনেট ইউজারটি বর্তমান প্রসঙ্গে" মডেলটির অংশ নন "যেখানে অ্যাস্পনেট ব্যবহারকারী আমার ব্যবহারকারী সত্তা
টিম

আপনি কি আপনার EDMX এ AspNetUser টেবিল যুক্ত করেছেন? এছাড়াও, নিশ্চিত হয়ে নিন যে আপনার অ্যাকাউন্টকন্ট্রোলার অ্যাপ্লিকেশন কনটেক্সট-এর পরিবর্তে এমভিসি 5 টেস্ট_ডিবিএনটিটিস (বা আপনার ডিবি প্রসঙ্গটির নাম হিসাবে যা কিছু ব্যবহার করছে) ব্যবহার করছে।
প্যাট্রিক ট্রান

8
ASP.NET পরিচয় ____ এর একটি বাষ্পীয় গাদা। প্রথম ডাটাবেস, কোনও ডকুমেন্টেশন, দুর্বল রেফারেনশিয়াল সীমাবদ্ধতার (এসকিউএল সার্ভারে ক্যাসকেড মোছার বিষয়টি অনুপস্থিত) এবং আইডির জন্য স্ট্রিংগুলি ব্যবহার করে (পারফরম্যান্স ইস্যু এবং সূচি বিভাজন) Hor এবং এটি পরিচয় কাঠামোয় তাদের 297 তম প্রচেষ্টা ...
ডিপস্পেস 101

4
@ ডিপস্পেস 101 সনাক্তকরণ ডিবি-ফার্স্টটিকে কোড-ফার্স্টের মতোই সমর্থন করে। টেমপ্লেটগুলি কোড-প্রথম করার জন্য সেটআপ করা হয়েছে তাই আপনি যদি কোনও টেম্পলেট থেকে শুরু করেন তবে আপনার চারপাশের কিছু জিনিস পরিবর্তন করতে হবে। ক্যাসকেড মোছা ঠিক কাজ করে, আপনি স্ট্রিংগুলি সহজেই ints এ পরিবর্তন করতে পারেন। আমার উত্তর নীচে দেখুন।
জুতো

4
@ শো আমাকে বলতে হবে যে আমার ধারণা আপনি ভুল হতে পারেন। এটি ডিবি-ফার্স্টে কীভাবে প্রয়োগ করা যায় তার কোনও কার্যকরী, বিস্তৃত উদাহরণ / টিউটোরিয়াল আমি এখনও খুঁজে পাইনি (কোনও ডকুমেন্টেশন নেই)। এপিআই সম্পত্তি আইডেন্টিটিউসারের মাধ্যমে জংশন সারণি "আইডেন্টিটিউসারোলস" রেফারেন্স করার চেষ্টা করে oles রোলস, যা ইএফ ডিবি-ফার্স্টের সাথে সম্পর্ক ছিন্ন করে যেহেতু জংশন সারণি সত্তা হিসাবে প্রকাশ করা হয়নি (দরিদ্র রেফারেন্সিয়াল সীমাবদ্ধতা-ইশ)। আমি আইডিগুলির জন্য স্ট্রিংগুলি সম্পর্কে দ্বিমত পোষণ করছি যেহেতু উত্তরাধিকারসূত্রে প্রাপ্ত ক্লাসগুলিতে ধরণের পরামিতিগুলি নির্দিষ্ট করে কাস্টমাইজ করা যায়। সংক্ষিপ্তসারটি হিসাবে, আমার দিকে তাকান যেমন তাদের প্রথমে মনে মনে ডিবি নেই।
লপসাইডে

উত্তর:


16

পোকো এবং ডেটাবেস ফার্স্ট সহ পরিচয় ব্যবস্থাটি ব্যবহার করা সম্ভব হওয়া উচিত, তবে আপনাকে কয়েকটি টুইট করতে হবে:

  1. সত্তা শ্রেণি তৈরি করার জন্য পোকো প্রজন্মের জন্য .tt-file আপডেট করুন partial। এটি আপনার পক্ষে একটি পৃথক ফাইলে অতিরিক্ত বাস্তবায়ন সরবরাহ করা সম্ভব করবে।
  2. Userক্লাসের অন্য একটি ফাইলে আংশিক বাস্তবায়ন করুন

 

partial User : IUser
{
}

এটি Userক্লাসটি প্রকৃত উত্পন্ন ফাইলগুলিকে স্পর্শ না করে সঠিক ইন্টারফেসটি বাস্তবায়িত করবে (উত্পন্ন ফাইলগুলি সম্পাদনা করা সর্বদা একটি খারাপ ধারণা)।


ধন্যবাদ আমি এটিকে চেষ্টা করে দেখতে হবে এবং এটি কার্যকর হলে রিপোর্ট করতে হবে।
প্যাট্রিক ট্রান

আপনি যা উল্লেখ করেছেন তা চেষ্টা করেছিলাম। আপডেট হওয়া তথ্যের জন্য আমার পোস্টটি দেখুন ... তবে সমাধানটি খুব মার্জিত ছিল না: /
প্যাট্রিক ট্রান

আমার ঠিক একই সমস্যা হচ্ছে দেখে মনে হচ্ছে ডিবি-ফার্স্ট নথিপত্রগুলি খুব কম। এটি একটি দুর্দান্ত পরামর্শ তবে আমি মনে করি আপনি ঠিক বলেছেন, এটি বেশ কার্যকর নয়
ফিল

4
এখনও কোনও সমাধান আছে যা হ্যাক নয়?
ব্যবহারকারী 20358

আমি পেঁয়াজ আর্কিটেকচারটি ব্যবহার করছি এবং সমস্ত পোকো কোরে রয়েছে। সেখানে IUser ব্যবহার করার পরামর্শ দেওয়া হয় না। অন্য কোন সমাধান?
উসমান খালিদ

13

আমার পদক্ষেপগুলি খুব অনুরূপ তবে আমি ভাগ করে নিতে চাই।

1) একটি নতুন এমভিসি 5 প্রকল্প তৈরি করুন

2) একটি নতুন Model.edmx তৈরি করুন। এমনকি এটি একটি নতুন ডাটাবেস এবং কোনও টেবিল না থাকলেও।

3) ওয়েবকনফিগ সম্পাদনা করুন এবং এই উত্পন্ন সংযোগের স্ট্রিং প্রতিস্থাপন করুন:

<add name="DefaultConnection" connectionString="Data Source=(LocalDb)\v11.0;AttachDbFilename=|DataDirectory|\aspnet-SSFInventory-20140521115734.mdf;Initial Catalog=aspnet-SSFInventory-20140521115734;Integrated Security=True" providerName="System.Data.SqlClient" />

এই সংযোগের সাথে:

<add name="DefaultConnection" connectionString="Data Source=.\SQLExpress;database=SSFInventory;integrated security=true;" providerName="System.Data.SqlClient" />

এরপরে, অ্যাপ্লিকেশনটি তৈরি করুন এবং রান করুন। কোনও ব্যবহারকারীর নিবন্ধন করুন এবং তারপরে সারণী তৈরি করা হবে।


4
এটি একটি সমস্যার সমাধান করেছে, আমি ডাটাবেসে অ্যাপ্লিকেশন ব্যবহারকারীকে দেখতে পেলাম না, তবে ডিফল্ট সংযোগটি প্রতিস্থাপনের পরে এটি কাজ করেছিল।
হাসেন চ।

10

সম্পাদনা: এমভিসি 5 কোডপ্লেক্স প্রকল্পের টেমপ্লেটের জন্য ইএফ ডেটাবেস সহ এএসপি.এনইটি পরিচয়।


আমি একটি বিদ্যমান ডাটাবেস ব্যবহার করতে এবং অ্যাপ্লিকেশন ব্যবহারকারীর সাথে সম্পর্ক তৈরি করতে চেয়েছিলাম। এসকিউএল সার্ভার ব্যবহার করে এটি এটি করেছিলাম তবে একই ধারণাটি সম্ভবত কোনও ডিবিতে কাজ করবে।

  1. একটি এমভিসি প্রকল্প তৈরি করুন
  2. ওয়েবকনফিগের ডিফল্ট সংযোগের অধীনে তালিকাভুক্ত ডিবি খুলুন। এটিকে বলা হবে (এস্পনেট- [টাইমস্ট্যাম্প] বা এরকম কিছু)
  3. ডাটাবেস টেবিলগুলি স্ক্রিপ্ট করুন।
  4. এসকিউএল সার্ভার ম্যানেজমেন্ট স্টুডিওতে বিদ্যমান ডাটাবেসে স্ক্রিপ্টযুক্ত টেবিলগুলি সন্নিবেশ করান।
  5. অ্যাপ্লিকেশন ব্যবহারকারীতে কাস্টমাইজ করুন এবং সম্পর্ক যুক্ত করুন (যদি প্রয়োজন হয়)।
  6. নতুন ওয়েব প্রকল্প তৈরি করুন> এমভিসি> ডিবি প্রথম প্রকল্প> ইএফ দিয়ে ডিবি আমদানি করুন ... আপনি sertedোকানো পরিচয় শ্রেণি বাদ দিয়ে।
  7. ইন IdentityModels.cs ApplicationDbContext পরিবর্তন :base("DefaltConnection")আপনার প্রকল্পের DbContext ব্যবহার করতে।

সম্পাদনা: Asp.Net পরিচয় শ্রেণির চিত্র এখানে চিত্র বর্ণনা লিখুন


6
সমস্যাটি ডিবিসিঙ্কটেক্সট নয়, তবে ব্যবহারকারী ব্যবহারকারী এবং রোলম্যানেজার এমন একটি শ্রেণীর প্রত্যাশা করেছেন যা মাইক্রোসফ্টের কাছ থেকে উত্তরাধিকার সূত্রে প্রাপ্ত spঅ্যাসনেট.এডেন্টিটি।এন্টিটি ফ্রেমওয়ার্ক।এডেন্টিটি ইউজার
প্যাট্রিক ট্রান

পাবলিক ক্লাস আইডেন্টিটিডিবি কনটেক্সট <টু ইউজার>: ডিবি কনটেক্সট যেখানে টিউসার: মাইক্রোসফ্ট.এএসপনেট.আইডেন্টিটি.এন্টি ফ্রেমওয়ার্ক।আইডেন্টিটি ইউজার। প্রথম ডাটাবেস ব্যবহার করার সময়, উত্পন্ন সত্তা শ্রেণিগুলি কোনও বেস ক্লাস থেকে উত্তরাধিকার সূত্রে আসে না।
প্যাট্রিক ট্রান

আপনি যখন সত্তা কাঠামোর সাথে ক্লাস তৈরি করেন তখন কেবল তাদের ডাটাবেস থেকে বাদ দিন।
দুর্গন্ধ

আপনি যদি ইডিএমএক্স থেকে পরিচয় টেবিলগুলি বাদ দেন তবে আপনি অন্য শ্রেণীর নেভিগেশন বৈশিষ্ট্যগুলি হারাবেন যা আপনার ইউজারআইডি
প্যাট্রিক ট্রান

34
আমি প্রথমে কোডে যেতে নারাজ নই ... এটি কেবলমাত্র কিছু পরিস্থিতিতে এবং সংস্থাগুলিতে, ডিবি অ্যাডমিন কোডার নয়, বেস টেবিলগুলি তৈরি করে।
প্যাট্রিক ট্রান

8

IdentityUserএখানে মূল্যহীন কারণ এটি UserStoreপ্রমাণীকরণের জন্য কোড-প্রথম অবজেক্টটি ব্যবহার করে । আমার নিজের Userঅবজেক্টটি সংজ্ঞায়িত করার পরে , আমি একটি আংশিক শ্রেণি প্রয়োগ করেছি IUserযা প্রয়োগ করে যা UserManagerক্লাস দ্বারা ব্যবহৃত হয় । আমি চাইছিলাম স্ট্রিংয়ের পরিবর্তে আমার Idএস intযাতে আমি কেবলমাত্র ইউজারআইডি-র টুস্ট্রিং () ফিরিয়ে দেব। একইভাবে আমি চেয়েছিলেন nমধ্যে Usernameuncapitalized যাবে।

public partial class User : IUser
{

    public string Id
    {
        get { return this.UserID.ToString(); }
    }

    public string UserName
    {
        get
        {
            return this.Username;
        }
        set
        {
            this.Username = value;
        }
    }
}

আপনার কোনও প্রয়োজন নেই IUser। এটি শুধুমাত্র একটি ইন্টারফেস দ্বারা ব্যবহৃত UserManager। সুতরাং আপনি যদি অন্য একটি "আইউসর" সংজ্ঞায়িত করতে চান তবে আপনার নিজের প্রয়োগটি ব্যবহার করতে আপনাকে এই শ্রেণিটি পুনরায় লিখতে হবে।

public class UserManager<TUser> : IDisposable where TUser: IUser

আপনি এখন আপনার নিজের লিখুন UserStoreযা ব্যবহারকারীদের সমস্ত স্টোরেজ, দাবি, ভূমিকা ইত্যাদি পরিচালনা করে etc. কোড-ফার্স্ট যা কিছু করে তার ইন্টারফেস প্রয়োগ করুন UserStoreএবং যেখানে "ব্যবহারকারী" আপনার সত্তার অবজেক্টে পরিবর্তন where TUser : IdentityUserহয়েছেwhere TUser : User

public class MyUserStore<TUser> : IUserLoginStore<TUser>, IUserClaimStore<TUser>, IUserRoleStore<TUser>, IUserPasswordStore<TUser>, IUserSecurityStampStore<TUser>, IUserStore<TUser>, IDisposable where TUser : User
{
    private readonly MyAppEntities _context;
    public MyUserStore(MyAppEntities dbContext)
    { 
        _context = dbContext; 
    }

    //Interface definitions
}

ইন্টারফেস বাস্তবায়নের কয়েকটি বিষয়ে এখানে কয়েকটি উদাহরণ দেওয়া হল

async Task IUserStore<TUser>.CreateAsync(TUser user)
{
    user.CreatedDate = DateTime.Now;
    _context.Users.Add(user);
    await _context.SaveChangesAsync();
}

async Task IUserStore<TUser>.DeleteAsync(TUser user)
{
    _context.Users.Remove(user);
    await _context.SaveChangesAsync();
}

এমভিসি 5 টেমপ্লেট ব্যবহার করে, আমি এটি AccountControllerদেখতে পরিবর্তন করেছি changed

public AccountController()
        : this(new UserManager<User>(new MyUserStore<User>(new MyAppEntities())))
{
}

এখন লগ ইন আপনার নিজস্ব টেবিলের সাথে কাজ করা উচিত।


4
আমি সম্প্রতি এটি বাস্তবায়নের সুযোগ পেয়েছি এবং কোনও কারণে (আমি বিশ্বাস করি পরিচয়টির 3.0 আপডেটের কারণে) আমি আইডেন্টিটিউজারের উত্তরাধিকার সূত্রে এবং তারপরে বৈশিষ্ট্যগুলিকে ওভাররাইড করে লগইনটি প্রয়োগ করতে সক্ষম হইনি; তবে একটি কাস্টম ব্যবহারকারী স্টোর লিখতে এবং উত্তরাধিকারসূত্রে আইউসার ভাল কাজ করেছে; কেবল একটি আপডেট দেওয়া, সম্ভবত কেউ এটি দরকারী মনে করে।
নাজ একিন

আপনি সমস্ত ইন্টারফেস বাস্তবায়ন বা সম্পূর্ণ প্রকল্পের জন্য লিঙ্ক দিতে পারেন?
দেশপেইল

আপনি এখানে আংশিক ক্লাস ব্যবহার করার কোনও নির্দিষ্ট কারণ আছে?
ব্যবহারকারী 8964654

আপনি যদি আপনার মডেলগুলি তৈরি করতে কোনও এডিএমএক্স ব্যবহার করেন তবে আপনাকে অবশ্যই একটি আংশিক শ্রেণি ব্যবহার করতে হবে। আপনি যদি প্রথমে কোডটি করেন তবে আপনি এটি বাদ দিতে পারেন
জুতার

3

গিটহাবের এই প্রকল্পটি একবার দেখুন: https://github.com/KriaSoft/AspNet.Identity

যা রয়েছে:

  • এসপিএল নেট ডাটাবেস ২.০ এর জন্য এসকিউএল ডাটাবেস প্রকল্প টেম্পলেট
  • সত্তা ফ্রেমওয়ার্ক ডাটাবেস-প্রথম সরবরাহকারী
  • উত্স কোড এবং নমুনা

এখানে চিত্র বর্ণনা লিখুন

আরও দেখুন : ADO.NET সনাক্তকরণের জন্য কীভাবে ডাটাবেস-প্রথম সরবরাহকারী তৈরি করবেন


3

ভাল প্রশ্ন.

আমি ডেটাবেস প্রথম ব্যক্তি বেশি। কোডটির প্রথম দৃষ্টান্তটি আমার কাছে আলগা-গোসি বলে মনে হচ্ছে এবং "মাইগ্রেশন" খুব ত্রুটিযুক্ত বলে মনে হচ্ছে।

আমি অ্যাসপেট আইডেন্টিটি স্কিমাটি কাস্টমাইজ করতে চেয়েছিলাম, এবং মাইগ্রেশন নিয়ে বিরক্ত হব না। আমি ভিজ্যুয়াল স্টুডিও ডাটাবেস প্রকল্পগুলি (স্ক্যাল্প্যাকেজ, ডেটা ডুড) এবং এটি স্কিমার আপগ্রেড করার ক্ষেত্রে কীভাবে খুব সুন্দর কাজ করে তা সম্পর্কে আমি ভাল ed

আমার সহজ সমাধানটি হ'ল:

1) একটি ডাটাবেস প্রকল্প তৈরি করুন যা অ্যাসপেট আইডেন্টিটি স্কিমা আয়না করে 2) এই প্রকল্পের আউটপুট (.dacpac) কে প্রকল্পের উত্স হিসাবে ব্যবহার করুন 3) যখন প্রয়োজন হয় তখন .ড্যাকপ্যাক স্থাপন করুন

এমভিসি 5 এর জন্য, ক্লাসটি সংশোধন করা ApplicationDbContextমনে হচ্ছে এটি চলছে ...

1) বাস্তবায়ন IDatabaseInitializer

public class ApplicationDbContext : IdentityDbContext<ApplicationUser>, IDatabaseInitializer<ApplicationDbContext> { ... }

2) কনস্ট্রাক্টরে সিগন্যাল করুন যে এই শ্রেণিটি ডাটাবেস সূচনা বাস্তবায়ন করবে:

Database.SetInitializer<ApplicationDbContext>(this);

3) বাস্তবায়ন InitializeDatabase:

এখানে, আমি ড্যাকএফএক্স ব্যবহার করতে এবং আমার .ড্যাকপ্যাক স্থাপন করতে পছন্দ করেছি

    void IDatabaseInitializer<ApplicationDbContext>.InitializeDatabase(ApplicationDbContext context)
    {
        using (var ms = new MemoryStream(Resources.Binaries.MainSchema))
        {
            using (var package = DacPackage.Load(ms, DacSchemaModelStorageType.Memory))
            {
                DacServices services = new DacServices(Database.Connection.ConnectionString);
                var options = new DacDeployOptions
                {
                    VerifyDeployment = true,
                    BackupDatabaseBeforeChanges = true,
                    BlockOnPossibleDataLoss = false,
                    CreateNewDatabase = false,
                    DropIndexesNotInSource = true,
                    IgnoreComments = true,

                };
                services.Deploy(package, Database.Connection.Database, true, options);
            }
        }
    }

2

আমি এর মাধ্যমে বেশ কয়েক ঘন্টা সময় ব্যয় করেছি এবং অবশেষে একটি সমাধান পেয়েছি যা আমি আমার ব্লগে এখানে ভাগ করে নিয়েছি । মূলত, আপনার দুর্গন্ধের উত্তরে বলা সমস্ত কিছুই করা দরকার তবে একটি অতিরিক্ত জিনিস সহ: আইডেন্টিটি ফ্রেমওয়ার্কটি আপনার অ্যাপ্লিকেশন সত্তার জন্য ব্যবহৃত সত্তা ফ্রেমওয়ার্ক সংযোগ স্ট্রিংয়ের উপরে একটি নির্দিষ্ট এসকিউএল-ক্লায়েন্ট সংযোগ স্ট্রিং রয়েছে তা নিশ্চিত করে।

সংক্ষেপে, আপনার অ্যাপ্লিকেশন পরিচয় ফ্রেমওয়ার্কের জন্য এবং আপনার অ্যাপ্লিকেশন সত্তার জন্য অন্য একটি সংযোগ স্ট্রিং ব্যবহার করবে। প্রতিটি সংযোগের স্ট্রিং আলাদা ধরণের। একটি সম্পূর্ণ টিউটোরিয়াল জন্য আমার ব্লগ পোস্ট পড়ুন।


আপনার ব্লগে আপনার উল্লিখিত সমস্ত কিছুই আমি দুবার চেষ্টা করেছি, এটি আমার পক্ষে কার্যকর হয়নি।
বাধন জৈন

@ ব্যাডন আমি দুঃখিত যে আমার ব্লগ পোস্টের নির্দেশাবলী আপনার পক্ষে কার্যকর হয়নি। আমার নিবন্ধটি অনুসরণ করে তারা সাফল্য পেয়েছে বলে অসংখ্য লোক তাদের ধন্যবাদ জানাতে পেরেছে। সর্বদা মনে রাখবেন যে মাইক্রোসফ্ট যদি কিছু আপডেট করে তবে ফলাফলটি প্রভাবিত করতে পারে। আমি পরিচয় ফ্রেমওয়ার্ক ২.০ সহ এএসপি.নেট এমভিসি 5 এর জন্য নিবন্ধটি লিখেছিলাম। এর বাইরে যে কোনও সমস্যা হতে পারে তবে এখনও অবধি আমি খুব সাম্প্রতিক মন্তব্য পেয়েছি সাফল্যের ইঙ্গিত দেয়। আমি আপনার সমস্যা সম্পর্কে আরও শুনতে চাই।
ড্যানিয়েল

আমি আবারও অনুসরণ করার চেষ্টা করব, আমি যে সমস্যার মুখোমুখি হয়েছি তা হ'ল আমি আমার কাস্টম ডেটাবেসটি ব্যবহার করতে পারি না, এটি স্বয়ংক্রিয়ভাবে নির্মিত ডাটাবেস ব্যবহার করে। যাইহোক, আমি আপনার নিবন্ধটি দিয়ে কিছু ভুল বলতে চাইনি। তোমার অভিজ্ঞতা ভাগাভাগি করার জন্য ধন্যবাদ।
বাধন জৈন

4
@ বাডন আমার বন্ধুকে চিন্তিত করবেন না, আমি কখনই অনুভব করিনি যে আপনি নিবন্ধটির সাথে কিছু ভুল বলেছিলেন। আমাদের সকলের বিভিন্ন প্রান্তের মামলাগুলির সাথে অনন্য পরিস্থিতি রয়েছে তাই কখনও কখনও অন্যদের জন্য যা কাজ করে তা অগত্যা আমাদের পক্ষে কাজ করে না। আমি আশা করি আপনি আপনার সমস্যার সমাধান করতে সক্ষম হয়েছিলেন।
ড্যানিয়েল

2

আমি দেখতে পেয়েছি যে @ জোশইটেস ১৯৮০ এর সহজ উত্তর রয়েছে।

একটি সিরিজ ট্রায়াল এবং ত্রুটির পরে আমি জোশের পরামর্শ মতো connectionStringযা করেছি এবং আমার উত্পন্ন ডিবি সংযোগ স্ট্রিংয়ের সাথে প্রতিস্থাপন করেছি। আমি মূলত যা সম্পর্কে বিভ্রান্ত হয়েছিল তা হ'ল নিম্নলিখিত পোস্টটি:

কীভাবে বিদ্যমান ডাটাবেসে ASP.NET MVC5 পরিচয় প্রমাণীকরণ যুক্ত করবেন

যেখানে @ উইন থেকে গৃহীত উত্তর ApplicationDbContext()সংযোগের নাম পরিবর্তন করতে বলেছে । আপনি যদি সত্ত্বা এবং একটি ডেটাবেস / মডেল ব্যবহার করছেন যেখানে ডাটাবেস সংযোগের স্ট্রিংটি উত্পন্ন এবং Web.configফাইলটিতে যুক্ত করা হয় তবে এটি কিছুটা অস্পষ্ট ।

ApplicationDbContext()সংযোগ নাম ম্যাপ এ ডিফল্ট সংযোগ Web.configফাইল। অতএব, জোশের পদ্ধতিটি সর্বোত্তমভাবে কাজ করে তবে ApplicationDbContext()আরও পাঠযোগ্য হিসাবে আমি আপনার ডেটাবেসটির নামটি @Win মূলত পোস্ট হিসাবে পরিবর্তন করার পরামর্শ দিচ্ছি, connectionStringযাতে "ডিফল্ট সংযোগ" এর জন্য পরিবর্তনের বিষয়ে নিশ্চিত হয়ে Web.configমন্তব্যটি এবং / অথবা সত্তাকে সরিয়ে ফেলা হবে উত্পন্ন ডাটাবেস অন্তর্ভুক্ত।

কোড উদাহরণ:


1

আমাদের একটি সত্তা মডেল ডিএলএল প্রকল্প রয়েছে যেখানে আমরা আমাদের মডেল ক্লাস রাখি। আমরা সমস্ত ডাটাবেস স্ক্রিপ্ট সহ একটি ডাটাবেস প্রকল্প রাখি। আমার পন্থাটি নিম্নরূপ ছিল

1) আপনার নিজস্ব প্রকল্প তৈরি করুন যা প্রথমে ডেটাবেস ব্যবহার করে EDMX রয়েছে

২) আপনার ডিবিতে টেবিলগুলি স্ক্রিপ্ট করুন, আমি লোকালডিবি (ডেটা সংযোগ) এর সাথে সংযুক্ত ভিএস ২০১৩ ব্যবহার করেছি এবং স্ক্রিপ্টটি ডাটাবেস প্রকল্পে অনুলিপি করেছি, যে কোনও কাস্টম কলাম যুক্ত করব, যেমন জন্ম তারিখ [তারিখ] বাতিল নয়

3) ডাটাবেস স্থাপন

4) মডেল (EDMX) প্রকল্প আপডেট করুন মডেল প্রকল্পে যুক্ত করুন

5) অ্যাপ্লিকেশন ক্লাসে যে কোনও কাস্টম কলাম যুক্ত করুন

public class ApplicationUser : IdentityUser
{
    public DateTime BirthDate { get; set; }
}

এমভিসি প্রকল্পে অ্যাকাউন্টকন্ট্রোলার নিম্নলিখিত যুক্ত করেছেন:

সনাক্তকারী সরবরাহকারী এটির জন্য একটি এসকিউএল সংযোগের স্ট্রিং চান, এটি ডাটাবেসের জন্য কেবল 1 সংযোগ স্ট্রিং রাখতে, EF সংযোগের স্ট্রিং থেকে সরবরাহকারী স্ট্রিংটি বের করুন

public AccountController()
{
   var connection = ConfigurationManager.ConnectionStrings["Entities"];
   var entityConnectionString = new EntityConnectionStringBuilder(connection.ConnectionString);
        UserManager =
            new UserManager<ApplicationUser>(
                new UserStore<ApplicationUser>(
                    new ApplicationDbContext(entityConnectionString.ProviderConnectionString)));
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.