実現したい事
insert時、テーブルのカラムに設定したDEFAULT値を反映させる
下記手順VBコードで.TRADE_QUANTITY = 1と書かなくてもT_TRADEのTRADE_QUANTITYにカラムのDEFAULT値である1が挿入される
環境
VisualStudio2017 15.5.2
SQLServer2017
ASP.NET Web Forms
VB.NET
EntityFramework6.2.0
用意コード
DbModel.vb
VB.NET
1Imports System.Data.Entity 2 3Partial Public Class DbModel 4 Inherits DbContext 5 6 Public Sub New() 7 MyBase.New("name=DbModel") 8 End Sub 9 10 Public Overridable Property T_TRADE As DbSet(Of T_TRADE) 11 12 Protected Overrides Sub OnModelCreating(ByVal modelBuilder As DbModelBuilder) 13 modelBuilder.Entity(Of T_TRADE)() _ 14 .Property(Function(e) e.USER_ID) _ 15 .IsUnicode(False) 16 17 modelBuilder.Entity(Of T_TRADE)() _ 18 .Property(Function(e) e.USER_NAME) _ 19 .IsUnicode(False) 20 End Sub 21End Class
T_TRADE.vb
VB.NET
1Imports System.ComponentModel.DataAnnotations 2Imports System.ComponentModel.DataAnnotations.Schema 3 4<Table("TEST.T_TRADE")> 5Partial Public Class T_TRADE 6 <Key> 7 Public Property TRADE_NO As Long 8 9 <Required> 10 <StringLength(10)> 11 Public Property USER_ID As String 12 13 <Required> 14 <StringLength(30)> 15 Public Property USER_NAME As String 16 17 Public Property TRADE_QUANTITY As Long 18End Class
テーブル
T_TRADE構成
SQL
1CREATE TABLE [TEST].[T_TRADE] ( 2 [TRADE_NO] BIGINT IDENTITY (1, 1) NOT NULL, 3 [USER_ID] VARCHAR (10) NOT NULL, 4 [USER_NAME] VARCHAR (30) NOT NULL, 5 [TRADE_QUANTITY] BIGINT CONSTRAINT [DF_T_TRADE_ESTIMATES_QUANTITY] DEFAULT ((1)) NOT NULL, 6 CONSTRAINT [PK_T_TRADE] PRIMARY KEY CLUSTERED ([TRADE_NO] ASC) 7);
手順
ADO.NET Entity Data Modelを作成→データベースからCode First選択して作成
下記VBコードにてinsert処理を行う
VB.NET
1Using context = New DbModel 2 context.T_TRADE.Add(New T_TRADE With { 3 .USER_ID = 1, 4 .USER_NAME = "山田"}) 5 context.SaveChanges() 6End Using
結果 T_TRADE
TRADE_NO 1
USER_ID 1
USER_ID 山田
TRADE_QUANTITY 0 ←ここが1になって欲しい
あなたの回答
tips
プレビュー