160527 Entity Framework db first 테스트
개요
- entity framework의 가장 실용적인 샘플은 무엇일까?
- EF DB first
- EF DB first 상세내용
- DB, 테이블 생성은 sql을 직접 사용해서 만들고,
- ADO.NET entities (=edmx파일) 자동생성 기능으로 Context 클래스 자동생성하여,
- SELECT, UPDATE, INSERT, DELETE 해결!
- 아래는 EF DB first 의 zero base에서의 샘플
- 로컬 SQL Server에서 DB, 테이블 생성
- 콘솔어플리케이션 클라이언트로 구현방식 기술
관련링크
https://www.asp.net/mvc/overview/getting-started/database-first-development/setting-up-database
https://www.asp.net/mvc/overview/getting-started/database-first-development/creating-the-web-application
https://www.asp.net/mvc/overview/getting-started/database-first-development/changing-the-database
https://www.asp.net/mvc/overview/getting-started/database-first-development/creating-the-web-application
https://www.asp.net/mvc/overview/getting-started/database-first-development/changing-the-database
DB, 테이블 생성 (CREATE DATABASE, CREATE TABLE)
- sql 파일 생성후 프로젝트에 추가
- 이 파일에서 CREATE DATABASE, CREATE TABLE를 할것임.
- sql 코딩을 하기전에 SQL Server에 연결
- 이렇게 선택된 SQL Server위에 DB, 테이블을 생성함.
- sql 파일에 직접 sql 코딩을 함.
- 실제로 실행함…
<create-tables.sql>
SELECT @@VERSION
SELECT @@SERVERNAME
EXEC sp_databases
USE tempdb
IF (EXISTS(SELECT name
FROM master.dbo.sysdatabases
WHERE name = 'mydb'))
BEGIN
PRINT 'mydb is existed!'
DROP DATABASE mydb
END
ELSE
PRINT 'mydb is not existed!'
CREATE DATABASE mydb
USE mydb
SELECT DB_NAME()
CREATE TABLE [dbo].[Course] (
[CourseID] INT IDENTITY (1, 1) NOT NULL,
[Title] NVARCHAR (50) NULL,
[Credits] INT NULL,
[Credits2] INT NULL,
PRIMARY KEY CLUSTERED ([CourseID] ASC)
)
CREATE TABLE [dbo].[Student] (
[StudentID] INT IDENTITY (1, 1) NOT NULL,
[LastName] NVARCHAR (50) NULL,
[FirstName] NVARCHAR (50) NULL,
[EnrollmentDate] DATETIME NULL,
PRIMARY KEY CLUSTERED ([StudentID] ASC)
)
SELECT * FROM information_schema.tables
PM> install-package EntityFramework
EDMX 파일 생성 (Entity Data Model)
- 새아이템 추가 > Entity Data Model
- EF designer from DB 선택
- 서버이름, DB이름을 지정
- connection string 을 작성
- SQL 서버 탐색기에서 복사해도 되지만
- 그냥 간단하게 아래 자동생성된 컨텍스트 코드에서 Data Source, Initial Catalog 부분만 변경해도 된다.
public partial class Entities : DbContext
{
public Entities()
: base(
@"
Data Source=HHDX1CARBON\MYINST;
Initial Catalog=mydb;
Integrated Security=True;
Connect Timeout=15;
Encrypt=False;
TrustServerCertificate=True;
ApplicationIntent=ReadWrite;
MultiSubnetFailover=False
")
{
}
클라이언트 코딩 (SELECT, INSERT, DELETE, UPDATE)
- 자동 생성된 Context 클래스인 Entities를 이용하여 Linq를 사용하여 SELECT, INSERT, DELETE, UPDATE 를 수행할 수 있다.
class Program
{
static void Main(string[] args)
{
using (var context = new Entities())
{
context.Database.Log += (log) =>
{
Console.WriteLine($"log : {log}");
};
context.Student.Add(new Student
{
LastName = "황",
FirstName = "현동",
EnrollmentDate = DateTime.Now
});
context.SaveChanges();
var list = context.Student.ToList();
}
}
}
이 글은 Evernote에서 작성되었습니다. Evernote는 하나의 업무 공간입니다. Evernote를 다운로드하세요. |
댓글
댓글 쓰기