সত্তা ফ্রেমওয়ার্ক কোডে আমি কীভাবে ডাটাবেস ভিউটি ব্যবহার করতে পারি,
সত্তা ফ্রেমওয়ার্ক কোডে আমি কীভাবে ডাটাবেস ভিউটি ব্যবহার করতে পারি,
উত্তর:
যদি, আমার মতো, আপনি যদি আপনার অ্যাপ্লিকেশনটির নির্দিষ্ট সত্তাগুলির সাথে সম্পর্কিত হতে কেবল অন্য ডাটাবেস (আমার ক্ষেত্রে একটি ইরপ) থেকে আসা সত্ত্বাকে ম্যাপিং করতে আগ্রহী হন, তবে আপনি সারণীটি ব্যবহার করার সাথে সাথে মতামতগুলি ব্যবহার করতে পারেন (দৃশ্যটিতে মানচিত্রটি মানচিত্র করুন) একইভাবে!). স্পষ্টতই, আপনি যদি সেই সত্তাগুলি আপডেট করার চেষ্টা করেন, তবে দৃশ্যটি আপডেটযোগ্য না হলে আপনি একটি ব্যতিক্রম পাবেন। প্রক্রিয়াটি সাধারণ (সারণির উপর ভিত্তি করে) সত্তার ক্ষেত্রে একই রকম:
ভিউর জন্য আলাদা নাম সেট করতে (ToTable ("Foo") ব্যবহার করে; কনস্ট্রাক্টরে) বা নির্দিষ্ট বৈশিষ্ট্য নির্ধারণ করতে একটি FooViewConfigration ফাইল ব্যবহার করুন
public class FooViewConfiguration : EntityTypeConfiguration<FooView>
{
public FooViewConfiguration()
{
this.HasKey(t => t.Id);
this.ToTable("myView");
}
}
মডেল বিল্ডারে FooViewConfigration ফাইলটি যুক্ত করুন, উদাহরণস্বরূপ প্রসঙ্গে ওমোডেলক্রিয়াটিং পদ্ধতিটি ওভারভারাইডিং:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Configurations.Add(new FooViewConfiguration ());
}
[Table("myView")]
এটি তৈরির চেয়ে যুক্তিযুক্তভাবে সহজ EntityTypeConfiguration
।
এটি একটি আপডেট হতে পারে তবে ইএফ কোডের সাথে ভিউগুলি ব্যবহার করার জন্য প্রথমে ক্লাসের শীর্ষে কেবলমাত্র [টেবিল ("নেমঅফভিউ")] যুক্ত করুন এবং অন্য যে সমস্ত হুপের মধ্য দিয়ে যাচ্ছেন সেগুলি না করে সবারই কাজ করা উচিত। এছাড়াও আপনাকে কলামগুলির মধ্যে একটি [কী] কলাম হিসাবে প্রতিবেদন করতে হবে। এটি প্রয়োগ করার জন্য নীচে আমার নমুনা কোডটি এখানে।
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace SomeProject.Data
{
[Table("SomeView")]
public class SomeView
{
[Key]
public int NameID { get; set; }
public string Name { get; set; }
}
}
এবং এখানে প্রসঙ্গটি দেখতে কেমন
using System.Data.Entity;
namespace SomeProject.Data
{
public class DatabaseContext : DbContext
{
public DbSet<SomeView> SomeViews { get; set; }
}
}
আপনি যা চান তা হ'ল ডি-নরমালাইজড অবজেক্টগুলির একগুচ্ছ, তবে আপনি কেবলমাত্র IQueryable<TDenormolized>
আপনার DbContext
ক্লাসে পাবলিক গেট-ওয়ান সম্পত্তি তৈরি করতে পারেন ।
ইন get
আপনি আপনার ডি সাধারণ বস্তুর মধ্যে ডি normoalized মান প্রকল্পের একটি Linq ফলাফলের ফিরে যান। এটি ডিবি ভিউ লেখার চেয়ে ভাল হতে পারে কারণ আপনি প্রোগ্রামিং করছেন, আপনি কেবল select
বিবৃতি ব্যবহার করেই সীমাবদ্ধ নন । এছাড়াও এটি টাইপ টাইপ নিরাপদ।
ToList()
কলগুলির মতো গণনাগুলি ট্রিগার না করার বিষয়ে সাবধানতা অবলম্বন করুন , এটি পিছিয়ে যাওয়া ক্যোয়ারীটি ভেঙে দেবে এবং আপনি ডাটাবেস থেকে মিলিয়ন রেকর্ড ফিরে পেয়ে আপনার অ্যাপ্লিকেশন সার্ভারে এগুলি ফিল্টার করতে পারেন।
আমি জানি না এটি সঠিক উপায় কিনা, তবে আমি চেষ্টা করেছি এবং এটি আমার পক্ষে কাজ করে।
আমি জানি এটি একটি পুরানো প্রশ্ন এবং এখানে অনেক উত্তর রয়েছে তবে আমি যখন এই উত্তরটি ব্যবহার করি তখন আমি একটি সমস্যা বাধ্য করেছিলাম এবং প্যাকেজ ম্যানেজার কনসোলে আপডেট-ডাটাবেস কমান্ডটি ব্যবহার করার সময় একটি ত্রুটি ঘটেছিল:
ডাটাবেসে ইতিমধ্যে '...' নামে একটি অবজেক্ট রয়েছে।
এবং আমি এই সমস্যাটি সমাধান করতে এই পদক্ষেপগুলি ব্যবহার করি:
আশা করি এটা সাহায্য করবে.
migrationBuilder.Sql("CREATE OR REPLACE VIEW ...
); যাতে সহকর্মীরাও এটি ব্যবহার করে তাদের ডাটাবেস আপগ্রেড করতে পারে।