কোন একটি Database table এ কোন column এর value কত থেকে কত range এর মধ্যে হতে পারবে, সেটি define করে দেয়ার জন্য CHECK constraint বাবহার করা হয়ে থাকে।
ধরা যাক, একটি Database table এ AGE নামের একটা integer column আছে। আমরা জানি এই AGE সাধারণত 0 এর থেকে কম বা 150 এর থেকে বেশি হতে পারে না। কিন্তু AGE একটি integer column হয়াতে এটি negative value বা 150 এর থেকে বেশি value ও নিতে পারবে।
তাই এই value insertion কে একটা limit এর মধ্যে রাখার জন্য আমরা CHECK constraint ব্যাবহার করতে পারি। SQL Server এ CHECK constraint দুইভাবে তৈরি করা যায় ১) graphically ২) using a query
নিচের CHECK constraint, AGE column এর value কে [0,150] এই range এর মধ্যে limit করে ফেলতে পারে : ALTER TABLE tblPerson ADD CONSTRAINT CK_tblPerson_Age CHECK (Age > 0 AND Age < 150)
SQL Server এ CHECK constraint add করার সাধারন formula : ALTER TABLE { TABLE_NAME } ADD CONSTRAINT { CONSTRAINT_NAME } CHECK ( BOOLEAN_EXPRESSION )
যদি BOOLEAN_EXPRESSION টি true return করে তাহলে CHECK constraint ঐ value কে Database table এ entrance permission দেবে, তাছাড়া দেবে না। পুরো একটা row insert এর সময় AGE column এ NULL value pass করানো সম্ভব, কারন যখন NULL value pass করানো হয় তখন boolean expression টি UNKNOWN evaluate করে এবং ঐ value কে allow করে।
CHECK constraint কে drop করতে হলে : ALTER TABLE tblPerson DROP CONSTRAINT CK_tblPerson_Age
উপরের explanations আরও ভালভাবে বুঝতে এই video টি একবার দেখে আসুন। ধন্যবাদ।।
যখন দুই বা ততোধিক Database টেবিলের মধ্যে একটা common key শেয়ার হয় তখন, Entity Framework এর Entity splitting এই feature টি একটা entity কে সেই দুই বা ততোধিক Database টেবিলের সাথে mapping করে দেয়। আগের পর্বে আমরা Entity Framework এর Entity splitting feature টা database first approach এ আলোচনা করেছিলাম, এই আর্টিকেলে আমরা Entity splitting feature কে code first approach এ আলোচনা করবো।
N.B:Practical ধাপগুলো আমি আপনাদের বোঝার সুবিধার জন্য English এ explain করবো। এই step গুলো VS2017(Visual Studio 2017) এ execute করা হয়েছে।
Step 1: Create a new empty asp.net web application project. Name it Demo. Install entity framework if it's not already installed.
Step 2: Add a class file to the project. Name it Employee.cs. Copy and paste the following code.
namespaceDemo
{
publicclassEmployee
{
// These property values should be stored in Employees Table
publicintEmployeeId { get; set; }
publicstringFirstName { get; set; }
publicstringLastName { get; set; }
publicstringGender { get; set; }
// These property values should be stored in EmployeeContactDetails Table
publicstringEmail { get; set; }
publicstringMobile { get; set; }
publicstringLandline { get; set; }
}
}
Step 3: Add a class file to the project. Name it EmployeeDBContext.cs. Copy and paste the following code.
usingSystem.Data.Entity;
namespaceDemo
{
publicclassEmployeeDBContext : DbContext
{
publicDbSet<Employee>Employees { get; set; }
}
}
Step 4: Add a class file to the project. Name it EmployeeRepository.cs. Copy and paste the following code.
Step 6: Add a webform to the project. Drag and drop the following 3 controls and build the solution. 1. GridView 2. DetailsView 3. ObjectDataSource
Step 7: Configure ObjectDataSource control a) Right click on ObjectDataSource control and select "Show Smart Tag" option b) Click on Configure Data Source link c) Select Demo.EmployeeRepository on Choose a Business Object screen and click Next d) On Define Data Methods screen i) On SELECT tab - Select GetEmployees() method ii) On UPDATE tab - Select UpdateEmployee(Employee employee) method iii) On INSERT tab - Select InsertEmployee(Employee employee) method iv) On DELETE tab - Select DeletEmployee(Employee employee) method
Step 8: Configure GridView control a) Right click on GridView control and select "Show Smart Tag" option b) Click on "Auto Format" link and select "Colourful" scheme c) Select "ObjectDataSource1" from "Choose Data Source" drop-down list d) Select Enable Editing and Enable Deleting checkboxes e) Set DataKeyNames="EmployeeId". Do this in the properties window of the GridView control f) Set ReadOnly="true" for the EmployeeId BoundField. You can do this directly in the HTML Source.
Step 9: Configure DetailsView control a) Right click on DetailsView control and select "Show Smart Tag" option b) Click on "Auto Format" link and select "Colourful" scheme c) Select "ObjectDataSource1" from "Choose Data Source" drop-down list d) Select Enable Inserting checkbox e) Set DeafultMode=Insert. Use properties window to set this. f) Set InsertVisible="false" for the EmployeeId BoundField. You can do this directly in the HTML Source. g) Generate ItemInserted event handler method for DetailsView control. Copy and paste the following code.
Step 10: If you already have Sample database in SQL Server. Delete it from SQL Server Management Studio.
Step 11: Run the application by pressing CTRL + F5. By default, entity framework creates one Table i.e Employees table. But we want entity framework to create the following 2 tables. a) Employees table with columns EmployeeId, FirstName, LastName, and Gender b) EmployeeContactDetails table with columns EmployeeId, Email, Mobile and Landline
Step 12: Override OnModelCreating() method to tell entity framework to generate 2 tables(Employees & EmployeeContactDetails) for the Employee entity. OnModelCreating() method is a virtual method present in DbContext class. So, modify EmployeeDBContext class in EmployeeDBContext.cs file as shown below.
Step 16: At this point run the application. Insert, update and delete an Employee, and notice that both the tables (Employees and EmployeeContactDetails) are updated as expected.
Output Should be look like following..
WebForm Output
উপরের explanations আরও ভালভাবে বুঝতে এই video টি একবার দেখে আসুন। ধন্যবাদ।।
আমরা এই আর্টিকেলে একটা demo program এর মাধ্যমে দেখবো -
1. console এর সাহায্যে কিভাবে read করা হয়
2. console এর সাহায্যে কিভাবে write করা হয়
3. console এ write করার দুইটা way আছে-
a) Concatenation
b) Placeholder syntax – Most preferred
Demo Code- using System; classProgram { static void Main() { // Prompt the user for his name Console.WriteLine("Please enter your name"); // Read the name from console string UserName = Console.ReadLine(); // Concatenate name with hello word and print Console.WriteLine("Hello " + UserName); //Placeholder syntax to print name with hello word //Console.WriteLine("Hello {0}", UserName); } }
N.B:C# কিন্তু একটা case sensitive language পার্ট 2 - C# টিউটোরিয়াল - Reading and writing to a console
Entity Framework এর Database First approach এ যখন দুই বা ততোধিক Database table একটা common key শেয়ার করে, তখন Entity mapping এর সাহায্যে কিভাবে Entity splitting করা যায় সে বিষয়ে আলোচনা করবো। চলুন একটা উদাহরণ দিয়ে দেখা যাক -
আমদের কাছে ২ টা table আছে। এই দুই টেবিলই একটা common key শেয়ার করে তার নাম EmployeeID
EmployeeContactDetails Table
EmployeeContactDetails Table
টেবিল ২ টা create করে এদের test data দিয়ে populate করার জন্য SQL Script -
এখন যদি আমরা Entity Framework এর database first approach এ entity generate করি তাহলে by default ২ টা entities create হবে। i.e Employee এবং EmployeeContactDetail entities -
EmployeeModel.edmx
এখন আমরা Employee নামের একটা entity চাই যেটা Employees এবং EmployeeContactDetails নামের দুইটা টেবিলকেই map করবে।
To achieve this 1. Cut Email, Mobile and LandLine properties from the EmployeeContactDetail entity and paste them in Employee entity. 2. Delete EmployeeContactDetail entity. On "Delete Unmapped Tables and Views" window click NO.
3. Right click on the Employee entity and select "Table Mapping" option from the context menu. Map EmployeeId, Email, Mobile and LandLine properties to the respective columns of EmployeeContactDetails table.
Table Mapping
At this point, we have only one Entity. Build the solution. Add a WebForm. Drag and drop the following 3 controls. 1. GridView 2. DetailsView 3. EntityDataSource
Configure EntityDataSource control a) Right click on EntityDataSource control and select "Show Smart Tag" option b) Click on Configure Data Source link c) Select EmployeeDBContext from the Named Connection drop-down list and click Next d) Select Employees from EntitySetName drop-down list and enable Inserts, Updates, and Deletes.
Configure GridView control a) Right click on GridView control and select "Show Smart Tag" option b) Click on "Auto Format" link and select "Colourful" scheme c) Select "EntityDataSource1" from "Choose Data Source" drop-down list d) Select Enable Editing and Enable Deleting checkboxes
Configure DetailsView control a) Right click on DetailsView control and select "Show Smart Tag" option b) Click on "Auto Format" link and select "Colourful" scheme c) Select "EntityDataSource1" from "Choose Data Source" dropdownlist d) Select Enable Inserting checkbox e) Set DeafultMode=Insert. Use properties window to set this. f) Set InsertVisible="false" for the EmployeeID BoundField. You can do this directly in the HTML Source. g) Generate ItemInserted event handler method for DetailsView control. Copy and paste the following code. protected void DetailsView1_ItemInserted
(object sender, DetailsViewInsertedEventArgs e)
{
GridView1.DataBind();
}
At this point run the application. Insert, update and delete an Employee, and notice that both the tables (Employees and EmployeeContactDetails) are updated as expected.
webForm should look like following-
webForm1
উপরের explanations আরও ভালভাবে বুঝতে এই video টি একবার দেখে আসুন। ধন্যবাদ।।