এএসপি.নেট এমভিসিতে, ভিউ মডেলগুলির একটি আইডি থাকা উচিত?


11

কোনও এএসপি.নেট এমভিসি অ্যাপ্লিকেশন বিকাশ করার সময় যা মডেলটি আপডেট হতে দেয়, আপনাকে কীভাবে আপডেট করা ভিউ মডেলটি গ্রহণ করতে হয় এবং এটি এখন আপডেট হওয়া মডেলের সাথে কীভাবে মেলে যায় তা জানতে কিছু উপায় প্রয়োজন। এটি করার কয়েকটি ভিন্ন উপায় আছে বলে মনে হচ্ছে এবং আমি ভাবছি যে এগুলির কোনও সঠিক এমভিসি না হলে (যেমন মডেলটিতে থাকা আপনার কন্ট্রোলার স্টোরের ডেটা থাকা সঠিক এমভিসি নয়)?

সমস্ত দেখুন মডেলের একটি আইডি রয়েছে: পেশাদাররা

  • সর্বদা নিশ্চিত করুন যে আপনি আপনার মডেলটির সাথে মেলে নিতে পারেন।

কনস

  • আপনার সত্যিকারের সতর্কতা অবলম্বন করতে হবে যে আইডিগুলির কোনওটিই পরিবর্তিত হয়নি অন্যথায় আপনার ব্যবহারকারীর সারি আপডেট করতে পারে যাতে তাদের অ্যাক্সেস না করা উচিত।

কেবল খালি ন্যূনতম দর্শনের মডেলগুলির একটি আইডি রয়েছে: পেশাদাররা

  • ব্যবহারকারীদের অ্যাক্সেস করা উচিত নয় এমন ডেটা আপডেট করার এড়াতে খুব কম চেকিংয়ের প্রয়োজন।

কনস

  • কোন ভিউ মডেলগুলি কোন মডেলের সাথে মেলে তা ট্র্যাক করা আরও কঠিন।
  • আপনাকে এখনও আইডি সহ কয়েকটি ভিউ মডেল চেক করতে হবে তা নিশ্চিত করার জন্য যে ব্যবহারকারীদের অ্যাক্সেস না থাকা উচিত ডেটা আপডেট করছে না।

কোনও দর্শন মডেলের আইডি নেই:

পেশাদাররা

  • আপডেটের জন্য আইডি চেক করার প্রয়োজন নেই।

কনস

  • আপনাকে রাষ্ট্রহীনতা ত্যাগ করতে হবে।

সুতরাং আমার দুটি প্রশ্ন আছে।

প্রথমত, কোন সঠিক / ভুল পছন্দ আছে? (যদি তা না হয় তবে তার অর্থ পছন্দটি মতামতের বিষয় এবং আমার দ্বিতীয় প্রশ্ন মতামত ভিত্তিক এবং এড়ানো উচিত))

দ্বিতীয়ত, যদি সঠিক / ভুল পছন্দ হয় তবে তা কোনটি?

একটি মন্তব্যে স্পষ্ট করতে, আমি যখন আপনার কাছে একটি ভিউ মডেল থাকে যা আপনার ডাটাবেস অবজেক্টটির নকল করে তখন আমি কথা বলছি।

এটি ভাবুন:

public class InvoiceViewModel  //Does not have ID, does not relate to model.
{
    public CustomerViewModel CustomerVM { get; set; }  //Maybe has ID?  Does relate to model.
    public AddressViewModel BillingAddressVM { get; set; } //Ditto
    public AddressViewModel ShippingAddressVM { get; set; } //Ditto
    public List<InvoiceLineItemViewModel> ItemVMs { get; set; }  //Each one has an ID?
}

এটা না:

public class InvoiceViewModel
{
    public Customer Customer { get; set; }
    public Address BillingAddress { get; set; }
    public Address ShippingAddress { get; set; }
    public List<InvoiceLineItem> Items { get; set; }
}

2
একটি ভিউমোডেল আইডি দিয়ে আপনি ঠিক কী করবেন? ভিউমোডেলের স্বতন্ত্র অবজেক্টগুলির কি নিজস্ব আইডি নেই?
রবার্ট হার্ভে

আমার সম্ভবত তখনই নির্দিষ্ট করা উচিত যখন ভিউ মডেল কোনও মডেলের সাথে সম্পর্কিত। সমস্ত দর্শন মডেল সম্পর্কিত নয়।
Lawtonfogle

You have to abandon statelessness.- আপনি সবেমাত্র এমভিসি ব্যবহারের পছন্দটি করেছেন অর্থহীন।
জোয়েল ইথারটন

আপনি এখানে যে আইডিটি উল্লেখ করছেন সেটি কোনও ডাটাবেস প্রাথমিক কী বা আপনি ভিউমোডেলটিতে যোগ করছেন এমন কিছু?
ভার্মিস

@ ভাইর্মিস, আমি মনে করি যে একটি ডাটাবেস প্রাথমিক কীটি একটি সাধারণ আইডি হবে। আরও পুঙ্খানুপুঙ্খ আইডি হ'ল এমন কোনও অ-সংশোধনযোগ্য টুকরো যা আপনাকে আপনার সম্পাদিত অবজেক্টটি পুনরায় না-সম্পাদিত স্থায়ী সংস্করণের সাথে সম্পর্কিত করতে দেয় যাতে সম্পাদিত পরিবর্তনগুলি স্থির থাকতে পারে।
লটনফোগল

উত্তর:


1

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

উদাহরণ স্বরূপ:

public class InvoiceViewModel
{
    public Customer Customer { get; set; }
    public Address BillingAddress { get; set; }
    public Address ShippingAddress { get; set; }
    public List<InvoiceLineItem> Items { get; set; }
}

ইনভয়েসভিউমোডেলের সাথে অনুরূপ ডাটাবেসে কোনও একক সারণী নেই বলে একটি ইনভয়েসভিউমোডেল অবজেক্টের জন্য কোনও আইডি নেই।

অবশ্যই, আপনি সর্বদা এই নির্দিষ্ট ভিউমডেলের আইডি হিসাবে ইনভয়েসআইডি ব্যবহার করতে পারেন। ইনভয়েসিআইডি হ'ল কার্যকর, কারণ এই বিষয়টি অবশেষে প্রতিনিধিত্ব করে। তবে আমি দেখতে পেলাম এমন একটি ভিউমোডেল অবজেক্ট যা ডাটাবেসে কোনও নির্দিষ্ট আইডির সাথে মিলে না।


1
ভাবুন যেখানে মডেলটিতে প্রকৃত মডেলগুলি ব্যবহার করার পরিবর্তে, ইনভয়েসভিউমোডেলটিতে কেবলমাত্র অন্য ভিউ মডেল রয়েছে (যা মডেলগুলির সাথে সম্পর্কিত)।
Lawtonfogle

-1

ডিফল্টরূপে আপনার আইডি থাকা উচিত যদিও আপনি এটি ব্যবহার করছেন না। নামক ডাটাবেসে একটি কলাম তৈরি করুন idএবং এতে auto incrementবৈশিষ্ট্যটি টিক দিন যাতে আপনার বাছাই করা হবে।


1
এটি আপনাকে কেন কোনও আইডি রাখা উচিত তা সম্বোধন না করেই সরাসরি অন্য উত্তরটির বিরোধিতা করে ।
মার্টিজান পিটারস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.