!extend:checked:vvvvv:1000:512
次スレを立てる時は↑を2行冒頭に書くこと(1行分は消えて表示されない為)
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。
なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスや酔っぱらいレスはやめてください
>>980を踏んだ人は新スレを建てて下さい。>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。
■前スレ
ふらっと C#,C♯,C#(初心者用) Part150
https://mevius.5ch.net/test/read.cgi/tech/1616471904/
■関連スレ
C#, C♯, C#相談室 Part94
https://mevius.5ch.net/test/read.cgi/tech/1553075856/
■コードを貼る場合は↓を使いましょう。
https://ideone.com/
https://dotnetfiddle.net/
■情報源
https://docs.microsoft.com/ja-jp/dotnet/standard/class-libraries
https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/
https://docs.microsoft.com/en-us/dotnet/standard/class-libraries
https://referencesource.microsoft.com/
・Insider.NET > .NET TIPS - @IT
https://www.atmarkit.co.jp/ait/subtop/features/dotnet/dotnettips_index.html
・DOBON.NET .NET Tips
https://dobon.net/vb/dotnet/index.html
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
ふらっと C#,C♯,C#(初心者用) Part151
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ 0f2c-S5yT)
2021/05/16(日) 10:45:59.00ID:8qTwOc620618デフォルトの名無しさん (ワッチョイ 23e4-HFg0)
2021/07/14(水) 18:19:46.23ID:9x2VN1AY0 >>614 >>615
やっぱり良くないか…
引数に渡してるものは部分的にしか使ってない
例えば100個くらいの配列を渡してこの中の10個くらいしか使ってない
>>616
これはこの内容で良さそう
やる事が一貫してるというか意味が通じてるというか
最初に挙げた例と違って申し訳ないんだけど、実際にやりたいのはこんな感じ
数珠繋ぎとは少し違う、ごめん
@全装置データ = 装置A〜Zデータ取得()
A正常or異常 = 装置AデータDB書き込み(全装置データ)
B正常or異常 = 装置BデータDB書き込み(全装置データ)
.
.
.
C正常or異常 = 装置ZデータDB書き込み(全装置データ)
D正常or異常 = 装置へデータ書き込み(全装置データ)
メソッドに渡すのはコピーとはいえ、@で取得したデータを色んな所へ渡して使い回してて、どこかで値が変わってしまう可能性も含んでる作り方なのかなと思って>>613の質問に至ったの
やっぱり良くないか…
引数に渡してるものは部分的にしか使ってない
例えば100個くらいの配列を渡してこの中の10個くらいしか使ってない
>>616
これはこの内容で良さそう
やる事が一貫してるというか意味が通じてるというか
最初に挙げた例と違って申し訳ないんだけど、実際にやりたいのはこんな感じ
数珠繋ぎとは少し違う、ごめん
@全装置データ = 装置A〜Zデータ取得()
A正常or異常 = 装置AデータDB書き込み(全装置データ)
B正常or異常 = 装置BデータDB書き込み(全装置データ)
.
.
.
C正常or異常 = 装置ZデータDB書き込み(全装置データ)
D正常or異常 = 装置へデータ書き込み(全装置データ)
メソッドに渡すのはコピーとはいえ、@で取得したデータを色んな所へ渡して使い回してて、どこかで値が変わってしまう可能性も含んでる作り方なのかなと思って>>613の質問に至ったの
619デフォルトの名無しさん (アウアウウー Sa09-6Mb1)
2021/07/14(水) 18:32:18.26ID:aEJsAOR7a620デフォルトの名無しさん (ブーイモ MMeb-u7yY)
2021/07/14(水) 18:50:03.34ID:gix7WKJqM621デフォルトの名無しさん (アウアウウー Sa09-9K0I)
2021/07/14(水) 19:02:26.74ID:QC3eIOjva >>617
その場合はその業務は誰の知識なのか?に注目する
メソッドの引数と返り値をスカラーにした場合、そのメソッドの「呼び出し側」が
1 引数のエンティティから適切な属性を取得し、2 メソッドを呼び出し、
3 引数そのものあるいはクローンに対して適切な属性を更新する
方法を「知らなければならない」
例えばサマーキャンペーン割引のロジックが「注文の合計基本価格が10000円以上、注文明細のどれか1つでもキャンペーン対象商品フラグが立っていること」だったらどうだろうか?
メソッドの呼び出し側はきっとこう思う筈だ
俺は注文をサマーキャンペーン割引して欲しいだけなのに、
なぜかサマーキャンペーン割引に合計基本価格と注文明細のキャンペーン対象商品フラグが必要だという業務知識を知らなければならない
ただ黙って割引してほしいだけなのに、なんで俺が適切な情報をいちいち与えてやらなければならんのだ
そんなのはサマーキャンペーン割引の責務を担うメソッドが知っているべきだろう
その場合はその業務は誰の知識なのか?に注目する
メソッドの引数と返り値をスカラーにした場合、そのメソッドの「呼び出し側」が
1 引数のエンティティから適切な属性を取得し、2 メソッドを呼び出し、
3 引数そのものあるいはクローンに対して適切な属性を更新する
方法を「知らなければならない」
例えばサマーキャンペーン割引のロジックが「注文の合計基本価格が10000円以上、注文明細のどれか1つでもキャンペーン対象商品フラグが立っていること」だったらどうだろうか?
メソッドの呼び出し側はきっとこう思う筈だ
俺は注文をサマーキャンペーン割引して欲しいだけなのに、
なぜかサマーキャンペーン割引に合計基本価格と注文明細のキャンペーン対象商品フラグが必要だという業務知識を知らなければならない
ただ黙って割引してほしいだけなのに、なんで俺が適切な情報をいちいち与えてやらなければならんのだ
そんなのはサマーキャンペーン割引の責務を担うメソッドが知っているべきだろう
622デフォルトの名無しさん (アウアウウー Sa09-9K0I)
2021/07/14(水) 19:11:44.77ID:QC3eIOjva >>618
この場合もまずは責務を明確にしてメソッドを分けるといいよ
1. オンメモリのデータセットから特定のデータを正確に抽出する責務を担ったメソッド
2. 単にデータをDBに書き込む責務を担ったメソッド
つまりこういうこと↓
a = Aデータ抽出(全データ)
b = Bデータ抽出(全データ)
…
z = Zデータ抽出(全データ)
結果A = リポジトリA.save(a)
結果B = リポジトリB.save(b)
…
結果Z = リポジトリZ.save(z)
結果All = リポジトリAll.save(全データ)
この場合もまずは責務を明確にしてメソッドを分けるといいよ
1. オンメモリのデータセットから特定のデータを正確に抽出する責務を担ったメソッド
2. 単にデータをDBに書き込む責務を担ったメソッド
つまりこういうこと↓
a = Aデータ抽出(全データ)
b = Bデータ抽出(全データ)
…
z = Zデータ抽出(全データ)
結果A = リポジトリA.save(a)
結果B = リポジトリB.save(b)
…
結果Z = リポジトリZ.save(z)
結果All = リポジトリAll.save(全データ)
623デフォルトの名無しさん (ワッチョイ a301-knaX)
2021/07/14(水) 23:06:55.57ID:idSc395A0624デフォルトの名無しさん (ワッチョイ 9b62-yxX3)
2021/07/14(水) 23:09:43.35ID:ikn1S79j0 >>618
メソッドの引数として渡したパラメータを書き換えないというのが基本
コピーして渡さないといけないメソッドとして作られてしまってるのが問題で、更新日時とか何かしらの書き換えがあるならその結果を別途返すべき
メソッドのパラメータとして全データを渡すよりそのメソッドが使う必要最低限のものにしといた方がわかりやすい
まあ、条件にマッチしないデータは無視するという動作でも不自然じゃないからそんなに重要なことじゃないかな
メソッドの引数として渡したパラメータを書き換えないというのが基本
コピーして渡さないといけないメソッドとして作られてしまってるのが問題で、更新日時とか何かしらの書き換えがあるならその結果を別途返すべき
メソッドのパラメータとして全データを渡すよりそのメソッドが使う必要最低限のものにしといた方がわかりやすい
まあ、条件にマッチしないデータは無視するという動作でも不自然じゃないからそんなに重要なことじゃないかな
625デフォルトの名無しさん (アウアウクー MM21-HFg0)
2021/07/15(木) 18:33:23.51ID:YvGaZ0G0M レスくれた人ありがとう
貰ったアドバイスを自分なりにもうちょい整理してみる
>>622
細かくなるけど必要なもの毎に処理を分けるってことだよね
自分みたいな素人目線だとこういうのは小さい処理が増えるのが煩雑に感じてやるのは躊躇するけど一個一個が独立してるしこの方が結果的に良さそう
貰ったアドバイスを自分なりにもうちょい整理してみる
>>622
細かくなるけど必要なもの毎に処理を分けるってことだよね
自分みたいな素人目線だとこういうのは小さい処理が増えるのが煩雑に感じてやるのは躊躇するけど一個一個が独立してるしこの方が結果的に良さそう
626デフォルトの名無しさん (アウアウウー Sa09-oYkY)
2021/07/15(木) 18:53:56.43ID:p7EIkR62a 1つのメソッド(動作)に複数の動作をやらせない
627デフォルトの名無しさん (スププ Sdfa-VvAo)
2021/07/16(金) 05:44:43.56ID:kw030b9nd628デフォルトの名無しさん (ブーイモ MMde-uKKI)
2021/07/16(金) 10:50:53.05ID:5OijHeJ1M AWS LambdaをC#で使ってる人おる?
DIの正しいやり方がわからん
ググると
FunctionクラスのデフォルトコンストラクタでServiceCollectionをインスタンス化して
Serviceを追加して解決してprivateフィールドに代入
的なコードは出てくるんだけど
なんか無理矢理感があってすごく気持ち悪い
ASP.NET CoreのControllerみたいにコンストラクタインジェクションしてくれればいいんだけどAWS LambdaのFunctionはそういうのないのかな
DIの正しいやり方がわからん
ググると
FunctionクラスのデフォルトコンストラクタでServiceCollectionをインスタンス化して
Serviceを追加して解決してprivateフィールドに代入
的なコードは出てくるんだけど
なんか無理矢理感があってすごく気持ち悪い
ASP.NET CoreのControllerみたいにコンストラクタインジェクションしてくれればいいんだけどAWS LambdaのFunctionはそういうのないのかな
629デフォルトの名無しさん (ブーイモ MMa1-3nkv)
2021/07/16(金) 12:25:27.67ID:Oq98um8EM 謎のランタイムが勝手にどっかで注入してくる方が気持ち悪いわ
Azure FunctionsなんかだとAzure側のランタイムがASP.NETと統合されてて注入できたりするけど、依存関係地獄になりがちでぶっちゃけ糞
Lambdaはその点余計なこと一切しないから単純明快で楽だ
そもそもLambdaごときにいちいちDIなんか要らんわ
FaaS使うんだったら差し替えはFunctionレベルでやるのが基本だよ
Azure FunctionsなんかだとAzure側のランタイムがASP.NETと統合されてて注入できたりするけど、依存関係地獄になりがちでぶっちゃけ糞
Lambdaはその点余計なこと一切しないから単純明快で楽だ
そもそもLambdaごときにいちいちDIなんか要らんわ
FaaS使うんだったら差し替えはFunctionレベルでやるのが基本だよ
630デフォルトの名無しさん (ブーイモ MMa1-3nkv)
2021/07/16(金) 12:44:52.48ID:Oq98um8EM WindowsってPowerShell以前はコマンドラインシェルが貧弱だったから、開発者は伝統的に何でもかんでもアプリケーションコードの箱庭内でやってしまう傾向があって、
Azure Functionsの設計思想なんかもそういう箱庭コーディングの文化を引き継いでいるところがある
対してAWSは小物をシェルで組み合わせて使うUNIX的な文化の色が強くて、Lambda関数もコーディング環境というよりはあくまで「ちゃんと単独で機能する小さなコマンド」なの
その中でさらにドメイン切って差し替えられるようにして、みたいな発想はしないんだよ
Azure Functionsの設計思想なんかもそういう箱庭コーディングの文化を引き継いでいるところがある
対してAWSは小物をシェルで組み合わせて使うUNIX的な文化の色が強くて、Lambda関数もコーディング環境というよりはあくまで「ちゃんと単独で機能する小さなコマンド」なの
その中でさらにドメイン切って差し替えられるようにして、みたいな発想はしないんだよ
631628 (ブーイモ MMde-uKKI)
2021/07/16(金) 13:41:32.46ID:YjA+/kj2M すまん自己解決したわ
AWSオフィシャルのLambda/ASP.NET Coreアダプタがあるらしい
まあそらそうだよなDIもまともに出来ないとかゴミサービスでしか使えんし
AWSオフィシャルのLambda/ASP.NET Coreアダプタがあるらしい
まあそらそうだよなDIもまともに出来ないとかゴミサービスでしか使えんし
632デフォルトの名無しさん (ワッチョイ 9d5f-R8z5)
2021/07/17(土) 01:55:18.52ID:YUa2zwOi0 最終的に保守のしやすいコードが一番ってことになりそうだ
633デフォルトの名無しさん (ワッチョイ 0154-x4cL)
2021/07/17(土) 04:37:12.67ID:SWDN49PP0 どうでもいいけど、状況判定に
if(HogeButton.Text == "あ" && !int.TryParse(HageButton.Text,out _))
みたいにコントロールのテキスト使いまくってるクラス見つけてしまった。
明日から犯人探しかな・・・
if(HogeButton.Text == "あ" && !int.TryParse(HageButton.Text,out _))
みたいにコントロールのテキスト使いまくってるクラス見つけてしまった。
明日から犯人探しかな・・・
634デフォルトの名無しさん (ブーイモ MMde-nkhS)
2021/07/17(土) 05:05:25.92ID:rQBsLn9RM どうでもいいけど、状況判定に
if(HogeButton.Text == "ほ" && !int.TryParse(HageButton.Text,out _))
みたいにコントロールのテキスト使いまくってるクラス見つけてしまった。
明日から犯人探しかな・・・
if(HogeButton.Text == "ほ" && !int.TryParse(HageButton.Text,out _))
みたいにコントロールのテキスト使いまくってるクラス見つけてしまった。
明日から犯人探しかな・・・
635デフォルトの名無しさん (アウアウウー Sa39-kbnc)
2021/07/17(土) 09:29:37.87ID:hzHLbOfFa 数学の積分で使うSの大きなやつって
for文なの?
for文なの?
636デフォルトの名無しさん (ブーイモ MMde-84rc)
2021/07/17(土) 09:47:49.19ID:FY+xgTJtM そう妄想するのは自由
637デフォルトの名無しさん (ワッチョイ 3a52-KoI6)
2021/07/17(土) 10:05:47.56ID:wcPyadci0 数値積分でググるといいんでないかな
638デフォルトの名無しさん (スププ Sdfa-xGJc)
2021/07/17(土) 12:05:36.74ID:ED/D6NvId 時間の流れが乱れている…
639デフォルトの名無しさん (エムゾネ FFfa-E0YB)
2021/07/17(土) 15:01:08.33ID:eTC1af8gF Σはforだが(といってもΣの方が遥かに高速な訳だが)
∫はforではない
∫はforではない
640デフォルトの名無しさん (ワッチョイ b6da-3z6a)
2021/07/17(土) 15:50:53.78ID:IsTBXftL0 Πは?
641デフォルトの名無しさん (アウアウウー Sa39-E0YB)
2021/07/17(土) 15:59:07.68ID:oVxa7DA2a >>639
Σも普通は解析的に答えを出すので、数値演算(ループ)を連想するのはかなり違うと思う
Σも普通は解析的に答えを出すので、数値演算(ループ)を連想するのはかなり違うと思う
642デフォルトの名無しさん (エムゾネ FFfa-E0YB)
2021/07/17(土) 16:04:35.47ID:eTC1af8gF forの解釈として毎回実行時計算する言語ならそうだが
forでもコンパイル時にΣやΠが解析的に完了してる言語があっても良いだろう
C#スレだからどうでも良いけど
forでもコンパイル時にΣやΠが解析的に完了してる言語があっても良いだろう
C#スレだからどうでも良いけど
643デフォルトの名無しさん (アウアウウー Sa39-E0YB)
2021/07/17(土) 17:20:34.66ID:6qmea//qa 解析的に求めるっていうのは例えば等差数列の式から
その和の公式を導出するようなことを言うんですよ。
その和の公式を導出するようなことを言うんですよ。
644デフォルトの名無しさん (ワッチョイ 6102-u1ma)
2021/07/17(土) 18:21:36.91ID:tq+22Yf30 プログラマと数学屋で
用語の齟齬が起きているな
用語の齟齬が起きているな
645デフォルトの名無しさん (アウアウウー Sa39-E0YB)
2021/07/17(土) 18:51:59.16ID:6qmea//qa いやいや、解析的っていうのは数値計算の対義語みたいなもので「数学的に解く」
みたいなニュアンスだと思うから数学屋さんはあまり使わないと思うよ知らんけど。
情報屋の言い回しだと思うよ。
俺は大学のアルゴリズムの講義でニュートン法とかやった時に聞いたのが最初の気がする
先生はもちろん情報工学の先生だ
みたいなニュアンスだと思うから数学屋さんはあまり使わないと思うよ知らんけど。
情報屋の言い回しだと思うよ。
俺は大学のアルゴリズムの講義でニュートン法とかやった時に聞いたのが最初の気がする
先生はもちろん情報工学の先生だ
646デフォルトの名無しさん (ワッチョイ 615f-eSYY)
2021/07/17(土) 18:59:49.36ID:RupVd7jf0647デフォルトの名無しさん (ワッチョイ 76a7-XiFW)
2021/07/17(土) 19:16:24.85ID:NOfppBHx0 ロックマンで見た
648デフォルトの名無しさん (ラクッペペ MM0e-5SdA)
2021/07/17(土) 19:24:46.25ID:iVAlWQfZM649デフォルトの名無しさん (ワッチョイ 76f2-yayT)
2021/07/17(土) 19:29:45.80ID:ALTiYW8P0 シグマゼロビーム
650デフォルトの名無しさん (ワッチョイ b101-E0YB)
2021/07/18(日) 13:09:02.92ID:RVrShVdw0 ビジネスが破綻する大半の原因は、 ”ビジネスを始める人の大半が、真の意味での
「起業家」ではなく、 起業したい、という熱に浮かれた「職人」として働いているに過ぎない。”
という事実にあります。
「職人」によって運営されているビジネスは、ビジネスが働くのではなく、彼ら自身が毎日働くこと
によって、成り立っています。
彼らは毎日、自分がやり方を知っている仕事を一生懸命にこなしていますが、「起業家」としての
視点が無いために、成長に限界が生まれます。
そして、生計を立てるために、彼ら自身がずっと働き続けないとならないのです。
誰もが必ず陥る罠
私が見ている限り、起業熱にうなされる人たちは、必ずと言ってもよいほど誤った
「仮定」を置いてしまうようだ。実は、のちに彼らが苦難の道を歩むことになるのは、
この、「仮定」が致命的に間違っているからなのである
致命的な仮定とは・・・「事業の中心となる専門的な能力があれば、事業を経営する能力は
十分に備わっている」ということである
私がこの仮定を致命的だと書いたのは、この仮定が間違っているからにほかならない
事業の中で専門的な仕事をこなすことと、その能力を生かして事業を経営することは
全く別の問題である。高い専門能力を持つ人にとって、独立は他人の為に働くという苦痛から
解放されるということを意味していた。それにもかかわらず、前提となる「仮定」が致命的とも
いえるほど間違えているために、彼らは自由になるどころか、自分が始めた事業に苦しめ
られるようになってしまうのである
マイケルEガーバー「はじめの一歩を踏み出そう」P28~29
「起業家」ではなく、 起業したい、という熱に浮かれた「職人」として働いているに過ぎない。”
という事実にあります。
「職人」によって運営されているビジネスは、ビジネスが働くのではなく、彼ら自身が毎日働くこと
によって、成り立っています。
彼らは毎日、自分がやり方を知っている仕事を一生懸命にこなしていますが、「起業家」としての
視点が無いために、成長に限界が生まれます。
そして、生計を立てるために、彼ら自身がずっと働き続けないとならないのです。
誰もが必ず陥る罠
私が見ている限り、起業熱にうなされる人たちは、必ずと言ってもよいほど誤った
「仮定」を置いてしまうようだ。実は、のちに彼らが苦難の道を歩むことになるのは、
この、「仮定」が致命的に間違っているからなのである
致命的な仮定とは・・・「事業の中心となる専門的な能力があれば、事業を経営する能力は
十分に備わっている」ということである
私がこの仮定を致命的だと書いたのは、この仮定が間違っているからにほかならない
事業の中で専門的な仕事をこなすことと、その能力を生かして事業を経営することは
全く別の問題である。高い専門能力を持つ人にとって、独立は他人の為に働くという苦痛から
解放されるということを意味していた。それにもかかわらず、前提となる「仮定」が致命的とも
いえるほど間違えているために、彼らは自由になるどころか、自分が始めた事業に苦しめ
られるようになってしまうのである
マイケルEガーバー「はじめの一歩を踏み出そう」P28~29
651デフォルトの名無しさん (スップ Sdda-gawc)
2021/07/18(日) 19:33:43.97ID:j2ludHuAd652デフォルトの名無しさん (スップ Sdda-gawc)
2021/07/18(日) 19:34:39.70ID:j2ludHuAd >>454
ありがとうございます
ありがとうございます
653デフォルトの名無しさん (スッップ Sdfa-gawc)
2021/07/18(日) 19:35:09.34ID:G9pOURuid >>455
ありがとうございます
ありがとうございます
654デフォルトの名無しさん (ワッチョイ 0154-x4cL)
2021/07/20(火) 06:41:50.36ID:oT6fq8l/0 SqlServerへの非同期クエリを、ORマッパー使わずにSqlConnectionとSqlCommandで送信したい場合、
Task.Run(() => sqlCommand.ExecuteReader())
と、
sqlCommand.ExecuteReaderAsync()
のどっちを使うのが理想ですか?
Task.Run(() => sqlCommand.ExecuteReader())
と、
sqlCommand.ExecuteReaderAsync()
のどっちを使うのが理想ですか?
655デフォルトの名無しさん (ワッチョイ 0d01-R8z5)
2021/07/20(火) 08:27:13.73ID:6lATwKKz0 Asyncついたメソッドをawaitしたまへ
656デフォルトの名無しさん (ワッチョイ 76e3-xL6t)
2021/07/20(火) 13:10:25.48ID:mJ2OrUml0 >>654
後者じゃね
後者じゃね
657デフォルトの名無しさん (ワッチョイ 462d-Io+N)
2021/07/20(火) 13:19:06.99ID:luEetGrO0 後者があるのに前者を使うメリットが分からない
658デフォルトの名無しさん (ワッチョイ 9d5f-E0YB)
2021/07/20(火) 13:58:57.54ID:DgdZFi450 >>654
その選択肢で悩んじゃう君にぴったりの記事があるぞ
https://www.kekyo.net/2021/02/24/7268
https://www.kekyo.net/2016/12/06/6186
その選択肢で悩んじゃう君にぴったりの記事があるぞ
https://www.kekyo.net/2021/02/24/7268
https://www.kekyo.net/2016/12/06/6186
659654 (ワッチョイ 0154-x4cL)
2021/07/20(火) 14:12:48.00ID:oT6fq8l/0 ありがとうございます。
普通に考えたら後者なのですが、フォームのLoadイベント時に上記処理を実行するようになっており、フォームLoad時にサーバーとの通信異常が発生していた場合、
前者の場合はフォームが応答する状態のまま、1〜2秒して例外をキャッチ出来ます。
後者の場合はフォームが応答しなくなり、1〜2秒して例外をキャッチ出来ます。
それでちょっと悩んでましたが、後者にします。
普通に考えたら後者なのですが、フォームのLoadイベント時に上記処理を実行するようになっており、フォームLoad時にサーバーとの通信異常が発生していた場合、
前者の場合はフォームが応答する状態のまま、1〜2秒して例外をキャッチ出来ます。
後者の場合はフォームが応答しなくなり、1〜2秒して例外をキャッチ出来ます。
それでちょっと悩んでましたが、後者にします。
660デフォルトの名無しさん (ワッチョイ 6eda-YhT2)
2021/07/20(火) 14:31:57.96ID:r+hLGJrq0 動作が固まるのはお前さんの使い方がおかしい。
661デフォルトの名無しさん (ワッチョイ 7663-LFeW)
2021/07/20(火) 15:01:47.73ID:BcEcK3qF0 僕も固まりそうです
662デフォルトの名無しさん (アウアウウー Sa39-1ivc)
2021/07/20(火) 18:15:30.23ID:ddjaqKuMa ボクのお尻も固まりそうです
663デフォルトの名無しさん (アウグロ MMc2-XiFW)
2021/07/20(火) 18:32:55.57ID:P25MFMIuM async汚染が怖いので使わない方向で
664デフォルトの名無しさん (ワッチョイ 0d01-E0YB)
2021/07/20(火) 19:34:56.43ID:SMoWJv7O0 WPFのバインディングについて質問です。
テキストボックスに読み取り専用プロパティをバインディングしたいのですが、
プロパティの値を変更してもテキストボックスに反映されません。
調べたら、プロパティの変更を通知するイベントが無いとだめとのことだったのですが、
setterなしでに通知イベントを実装する方法は無いでしょうか。
例:
public class ViewModel
{
public int ID { get; set; }
public string Name { get; set; }
public string NameSan { get => Name + "-san"; }
}
<TextBox Text="{Binding NameSan}" />
テキストボックスに読み取り専用プロパティをバインディングしたいのですが、
プロパティの値を変更してもテキストボックスに反映されません。
調べたら、プロパティの変更を通知するイベントが無いとだめとのことだったのですが、
setterなしでに通知イベントを実装する方法は無いでしょうか。
例:
public class ViewModel
{
public int ID { get; set; }
public string Name { get; set; }
public string NameSan { get => Name + "-san"; }
}
<TextBox Text="{Binding NameSan}" />
665デフォルトの名無しさん (ワッチョイ 76a7-XiFW)
2021/07/20(火) 19:59:24.26ID:K5CNGksB0 誰にとっての読み取り専用なん?
666デフォルトの名無しさん (ワッチョイ 76a7-XiFW)
2021/07/20(火) 20:08:36.24ID:K5CNGksB0 wpfでバインドできないプロパティは
DependencyPropertyでないから
DependencyObjectを派生させる必要がある
→UserControlを作ってそこにDependencyPropertyを作成する
ってググったら出てきた
DependencyPropertyでないから
DependencyObjectを派生させる必要がある
→UserControlを作ってそこにDependencyPropertyを作成する
ってググったら出てきた
667デフォルトの名無しさん (ワッチョイ 9d5f-Rh1M)
2021/07/20(火) 20:21:36.49ID:GzauUP740 XAML側でNameをバインディングしてコンバーターで-san付けるかなあ
668デフォルトの名無しさん (ワッチョイ 462d-Io+N)
2021/07/20(火) 20:27:17.58ID:luEetGrO0 >>664
NameプロパティのSetterでまとめて通知すれば良い
private string _name;
public string Name
{
get => _name;
set
{
_name = value;
PropertyChanged?.Invoke( nameof( Name ) );
PropertyChanged?.Invoke( nameof( NameSan ) );
}
}
NameプロパティのSetterでまとめて通知すれば良い
private string _name;
public string Name
{
get => _name;
set
{
_name = value;
PropertyChanged?.Invoke( nameof( Name ) );
PropertyChanged?.Invoke( nameof( NameSan ) );
}
}
669デフォルトの名無しさん (ワッチョイ 0d01-E0YB)
2021/07/20(火) 20:35:19.09ID:SMoWJv7O0670デフォルトの名無しさん (ワッチョイ 462d-Io+N)
2021/07/20(火) 21:00:19.75ID:luEetGrO0 >>669
外のクラスだろうがやることは変わらない
外のクラスからNameSanプロパティの内容が変わるタイミングで同じように通知する
外のクラスを変更するのが出来なければタイマーで通知を出すなんて荒業も思い付いたけどいまいち
外のクラスだろうがやることは変わらない
外のクラスからNameSanプロパティの内容が変わるタイミングで同じように通知する
外のクラスを変更するのが出来なければタイマーで通知を出すなんて荒業も思い付いたけどいまいち
671デフォルトの名無しさん (ワッチョイ 0d01-E0YB)
2021/07/20(火) 21:07:59.62ID:SMoWJv7O0 >>670
>外のクラスからNameSanプロパティの内容が変わるタイミングで同じように通知する
ありがとうございます。外のクラスから通知させることができるのですね。
早速試してみたいと思います。
教えてくれた皆様、ありがとうございました。
>外のクラスからNameSanプロパティの内容が変わるタイミングで同じように通知する
ありがとうございます。外のクラスから通知させることができるのですね。
早速試してみたいと思います。
教えてくれた皆様、ありがとうございました。
672デフォルトの名無しさん (ワッチョイ 9d5f-Rh1M)
2021/07/20(火) 21:11:28.67ID:GzauUP740 なんでパターン崩してイレギュラーなことしようとするんだろ
673デフォルトの名無しさん (ワッチョイ 462d-Io+N)
2021/07/20(火) 21:45:11.17ID:luEetGrO0 >>670
ちょっと訂正。忘れてた。
クラスの外からイベントを直接発生させられないから、ViewModelクラスに変更通知イベントを
発生させるメソッドを実装して、外のクラスからはそのメソッドを呼び出す必要がある。
public Class ViewModel : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
public void FirePropetyChangedEvent()
{
PropertyChanged?.Invoke( nameof( NamaSan ) );
}
}
ちょっと訂正。忘れてた。
クラスの外からイベントを直接発生させられないから、ViewModelクラスに変更通知イベントを
発生させるメソッドを実装して、外のクラスからはそのメソッドを呼び出す必要がある。
public Class ViewModel : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
public void FirePropetyChangedEvent()
{
PropertyChanged?.Invoke( nameof( NamaSan ) );
}
}
674デフォルトの名無しさん (ワッチョイ 76a7-XiFW)
2021/07/20(火) 22:00:21.86ID:K5CNGksB0 >>672
その時点でこのスレには相応しくないよね
その時点でこのスレには相応しくないよね
675デフォルトの名無しさん (ワッチョイ 052f-NvNM)
2021/07/21(水) 21:46:25.70ID:Ra0jV4kr0 その外のクラスの変更通知を受け取って、自身の変更通知をだせばいいんじゃないのか
なぜわざわざ外のクラスが別クラスのメソッド呼ぶんだ?依存関係がおかしいだろ
なぜわざわざ外のクラスが別クラスのメソッド呼ぶんだ?依存関係がおかしいだろ
676デフォルトの名無しさん (ワッチョイ 6e62-COnk)
2021/07/22(木) 09:48:14.07ID:H+nzk7c30677デフォルトの名無しさん (ワッチョイ 1a01-DrjK)
2021/07/22(木) 11:03:00.91ID:cBUwSw0B0 >>675
だね
Modelの値が変更されたらViewModelの値も変更してUIも更新したいってことだから
ViewModelでModelの変更通知をsubscribeしてsetter経由でPropertyChangedイベントを発生させてUIを更新すればいい
値の更新が必要にもかかわらず読み取り専用プロパティにする意味がよくわからない
だね
Modelの値が変更されたらViewModelの値も変更してUIも更新したいってことだから
ViewModelでModelの変更通知をsubscribeしてsetter経由でPropertyChangedイベントを発生させてUIを更新すればいい
値の更新が必要にもかかわらず読み取り専用プロパティにする意味がよくわからない
678デフォルトの名無しさん (ワッチョイ 052f-Rh1M)
2021/07/22(木) 15:01:08.94ID:2BJFjQfb0 PropertyChangedイベントを発生させれば事足りるのだが
setter経由させる意味がわからん
そのために読み取り専用を読み書きに変えるのか?
setter経由させる意味がわからん
そのために読み取り専用を読み書きに変えるのか?
679デフォルトの名無しさん (ブーイモ MMfa-3nkv)
2021/07/22(木) 15:10:14.18ID:04ABr3MxM WPFなら仕方ない
嫌ならオワコンWPFなんか捨ててWebで仮想DOM系のフレームワーク使えば何もしなくても自動的に差分取ってくれるよ
嫌ならオワコンWPFなんか捨ててWebで仮想DOM系のフレームワーク使えば何もしなくても自動的に差分取ってくれるよ
680デフォルトの名無しさん (ワッチョイ 1a01-DrjK)
2021/07/22(木) 15:34:51.65ID:cBUwSw0B0681デフォルトの名無しさん (ワッチョイ fa2c-NvNM)
2021/07/22(木) 17:41:00.24ID:ViOG2+oF0 適当にはこんな感じでしょ
model.PropertyChanged += (sender, e) => {
if (e.PropertyName == nameof(model.Hoge)) {
this.OnPropertyChanged(nameof(this.Piyo));
}
};
public string Piyo => $"OK {this.model.Hoge}";
model.PropertyChanged += (sender, e) => {
if (e.PropertyName == nameof(model.Hoge)) {
this.OnPropertyChanged(nameof(this.Piyo));
}
};
public string Piyo => $"OK {this.model.Hoge}";
682デフォルトの名無しさん (ワッチョイ 69ad-zcwp)
2021/07/22(木) 19:46:33.52ID:UxCXOW0H0 イベントを発生させてないじゃん
683デフォルトの名無しさん (オイコラミネオ MMad-kbnc)
2021/07/22(木) 19:51:13.33ID:vwDpdZeFM 基本をまず理解してないなあw
684デフォルトの名無しさん (ワッチョイ 695f-uCgs)
2021/07/23(金) 21:15:00.87ID:ETT9THzl0 PropertyChangedという言葉の意味を考えてみろ
setterにあるのが自然だろ
おまじないだよ考えなくていい
setterにあるのが自然だろ
おまじないだよ考えなくていい
685デフォルトの名無しさん (ワッチョイ b92f-TOGs)
2021/07/23(金) 23:01:35.61ID:xliiSqIt0 そのためにわざわざ読み取り専用でいいプロパティにsetter作れってか
686デフォルトの名無しさん (ブーイモ MM4d-A0XN)
2021/07/23(金) 23:08:52.13ID:c4wX/KeRM >>684
よく勘違いしてる人いるけど、イベントの-edは過去分詞じゃなくて動詞の過去形
つまりプロパティが他者によって変更されたのではなくプロパティが主体なので、
setterによらず自発的に変更イベントを発生させたとしてもなんら不自然ではない
よく勘違いしてる人いるけど、イベントの-edは過去分詞じゃなくて動詞の過去形
つまりプロパティが他者によって変更されたのではなくプロパティが主体なので、
setterによらず自発的に変更イベントを発生させたとしてもなんら不自然ではない
687デフォルトの名無しさん (アウアウウー Sa5d-Hgw+)
2021/07/24(土) 00:23:31.06ID:h1SwVBD3a イベントが過去形か受動態かについては議論があるよ
全部過去形だというのは明らかに無理があるw
どっちの場合もあると思うしそれでいいでしょ。
受動態>過去形>完了形
一般的な使用頻度はこうじゃないかな。
しばらく前からイベントに普通の名詞形を使う命名の仕方もあるよね
全部過去形だというのは明らかに無理があるw
どっちの場合もあると思うしそれでいいでしょ。
受動態>過去形>完了形
一般的な使用頻度はこうじゃないかな。
しばらく前からイベントに普通の名詞形を使う命名の仕方もあるよね
688デフォルトの名無しさん (ブーイモ MM4d-A0XN)
2021/07/24(土) 00:26:07.51ID:xo8cuQ5sM689デフォルトの名無しさん (アウアウウー Sa5d-Hgw+)
2021/07/24(土) 00:33:52.24ID:h1SwVBD3a690デフォルトの名無しさん (ワッチョイ 8b63-dIS9)
2021/07/24(土) 00:36:42.84ID:LBBZ+Kmj0 長々と何やってんだこいつらは
691デフォルトの名無しさん (ワッチョイ 59ad-isbc)
2021/07/24(土) 00:55:30.71ID:5I2AJlas0692デフォルトの名無しさん (ブーイモ MM9d-jH4d)
2021/07/24(土) 01:44:28.78ID:fvYf7+8hM よく勘違いしてる人いるけどwww
693デフォルトの名無しさん (ワッチョイ 8ba7-tzNt)
2021/07/24(土) 01:47:50.50ID:1HbXMJpe0 その労力でドキュメント書けよと
694デフォルトの名無しさん (ワッチョイ 695f-qCnf)
2021/07/24(土) 02:04:43.55ID:hjQXc5u90 何したいのかよくわからんけど
getterしか必要ないってことはそもそも画面に表示する必要ないプロパティじゃないの
getterしか必要ないってことはそもそも画面に表示する必要ないプロパティじゃないの
695デフォルトの名無しさん (ワッチョイ 8ba7-tzNt)
2021/07/24(土) 02:16:18.66ID:1HbXMJpe0 イミフ
値に単位でも付いてんじゃん?
値に単位でも付いてんじゃん?
696デフォルトの名無しさん (アウアウウー Sa5d-Hgw+)
2021/07/24(土) 02:31:41.54ID:h1SwVBD3a >>691
何を言っているのか意味がわかんないけど、自動詞って言葉の意味は分かる?
dropしたのはDroppedDownイベントを発生させるオブジェクトではないよね?
イベントを発生させるオブジェクトはdropしたんじゃなくて「された」んだよw
もちろん「何かが落ちた」という現象を通知するイベントなんだと強弁することもできるが、
これ言ってて苦しいでしょ(笑)不自然で無理矢理すぎる。
受動態だって考える方が100倍自然だ。
Clickedイベントとかも同じ。
これが過去形ならButtonが自分で自分をクリックしたのかとw
お前はクリックしたんじゃなくてされたんだろうがとw
何を言っているのか意味がわかんないけど、自動詞って言葉の意味は分かる?
dropしたのはDroppedDownイベントを発生させるオブジェクトではないよね?
イベントを発生させるオブジェクトはdropしたんじゃなくて「された」んだよw
もちろん「何かが落ちた」という現象を通知するイベントなんだと強弁することもできるが、
これ言ってて苦しいでしょ(笑)不自然で無理矢理すぎる。
受動態だって考える方が100倍自然だ。
Clickedイベントとかも同じ。
これが過去形ならButtonが自分で自分をクリックしたのかとw
お前はクリックしたんじゃなくてされたんだろうがとw
697デフォルトの名無しさん (ワッチョイ 4901-3Z6B)
2021/07/24(土) 02:49:48.99ID:hRScAD3a0 どうでもいいことをw
698デフォルトの名無しさん (ワッチョイ 3333-B2Sg)
2021/07/24(土) 07:33:48.35ID:Ogl9r0n00 続きは議論スレでどうぞ。
ふらっと C#,C♯,C#(議論用) [無断転載禁止]©2ch.net
https://mevius.5ch.net/test/read.cgi/tech/1469538912/
ふらっと C#,C♯,C#(議論用) [無断転載禁止]©2ch.net
https://mevius.5ch.net/test/read.cgi/tech/1469538912/
699デフォルトの名無しさん (ワッチョイ 59ad-isbc)
2021/07/24(土) 09:11:25.75ID:5I2AJlas0 >>696
自動詞わかるよ?
なんで自制を使うかって理由が抜けてるんだと思う。
ネイティブにとってもそこはMSの方針いけてねえよなって思うところかもしれんのだと思うんだけど、MSはBeforeClickとAfterClickとかそういう接頭語を使ってイベント発火順を表して欲しくないんよ。
なので、Clickのあとに起こるイベントはClickedなんよ。
Click→Clicking→Clickedになる。
自動詞わかるよ?
なんで自制を使うかって理由が抜けてるんだと思う。
ネイティブにとってもそこはMSの方針いけてねえよなって思うところかもしれんのだと思うんだけど、MSはBeforeClickとAfterClickとかそういう接頭語を使ってイベント発火順を表して欲しくないんよ。
なので、Clickのあとに起こるイベントはClickedなんよ。
Click→Clicking→Clickedになる。
700デフォルトの名無しさん (ワッチョイ 0bda-xIv+)
2021/07/24(土) 09:34:03.83ID:LgxXeocX0 NCが無いぞ
701デフォルトの名無しさん (ワッチョイ 2b7c-rYQD)
2021/07/24(土) 10:12:44.82ID:mVGUTLQy0 >>694
ViewModelでの話に限って言うと
setterを持っているってことはViewから入力があるという含意がある
(もちろんケースバイケースでそうでない設計にすることもある)
で、例えばViewのラベルで現在時刻表示するためにViewModelにNowTimeプロパティを用意したとして
Viewからの入力はないんだからsetterを用意するのはおかしいよね、ということ
ViewModelでの話に限って言うと
setterを持っているってことはViewから入力があるという含意がある
(もちろんケースバイケースでそうでない設計にすることもある)
で、例えばViewのラベルで現在時刻表示するためにViewModelにNowTimeプロパティを用意したとして
Viewからの入力はないんだからsetterを用意するのはおかしいよね、ということ
702デフォルトの名無しさん (ワッチョイ b102-hFcM)
2021/07/24(土) 11:05:01.44ID:syFCi9m80 >>698
誘われてあっちを久し振りに読んでみたけど、ここよりも有意義なことが書いてある気がしてならない。
誘われてあっちを久し振りに読んでみたけど、ここよりも有意義なことが書いてある気がしてならない。
703デフォルトの名無しさん (ワッチョイ fb62-xnNM)
2021/07/24(土) 12:26:37.04ID:rh7fcU6F0 >>701
現在時刻は変化してくんだからprivateなセッターで値を更新して、プロパティ変更イベント発生させればいいんじゃないの?
現在時刻は変化してくんだからprivateなセッターで値を更新して、プロパティ変更イベント発生させればいいんじゃないの?
704デフォルトの名無しさん (ワッチョイ 9301-416K)
2021/07/24(土) 12:40:41.42ID:qEX1axDl0 >>701
>setterを持っているってことはViewから入力があるという含意がある
ないよ
外部から呼ばれたくなければprivate/protectedなsetterを使う
現在時刻のような呼び出しのたびに変化するような値は一般的にプロパティにすべきじゃないよ
(DateTime.Nowとかあるけど、あれはMSも間違いだと思ってるらしい)
>setterを持っているってことはViewから入力があるという含意がある
ないよ
外部から呼ばれたくなければprivate/protectedなsetterを使う
現在時刻のような呼び出しのたびに変化するような値は一般的にプロパティにすべきじゃないよ
(DateTime.Nowとかあるけど、あれはMSも間違いだと思ってるらしい)
705デフォルトの名無しさん (ワッチョイ 2b7c-rYQD)
2021/07/24(土) 12:42:42.49ID:mVGUTLQy0 別にそれでもいいんだけど
現在時刻そのものはDateTime.Nowでとるじゃん(これがModelに相当する)
わざわざViewModelにDateTimeのフィールド置いたりとかする必要がない
ViewModelは単にDateTime.Nowを返すgetterを持つだけで充分
setter書いても実際には何もsetしないとか違和感バリバリだし
現在時刻そのものはDateTime.Nowでとるじゃん(これがModelに相当する)
わざわざViewModelにDateTimeのフィールド置いたりとかする必要がない
ViewModelは単にDateTime.Nowを返すgetterを持つだけで充分
setter書いても実際には何もsetしないとか違和感バリバリだし
706デフォルトの名無しさん (ワッチョイ 992d-qCnf)
2021/07/24(土) 12:46:48.97ID:M/JULpVd0707デフォルトの名無しさん (ワッチョイ b92f-MYQi)
2021/07/24(土) 13:18:24.45ID:v4FoWuLT0 もとの話は他のクラスのプロパティから導出されるプロパティって話だったんだが
708デフォルトの名無しさん (ワッチョイ fb62-xnNM)
2021/07/24(土) 13:23:10.38ID:rh7fcU6F0 >>705
それでもいいじゃなくて、どうクラスを設計するか
取得した時点でモデルプロパティ値が更新されたと見なす仕様なのか、リアルタイムで更新する仕様なのか
単に現在時刻をとれればいいのであれば、それはプロパティじゃなくてメソッドだし、プロパティ変更イベントを用意する必要もない
それでもいいじゃなくて、どうクラスを設計するか
取得した時点でモデルプロパティ値が更新されたと見なす仕様なのか、リアルタイムで更新する仕様なのか
単に現在時刻をとれればいいのであれば、それはプロパティじゃなくてメソッドだし、プロパティ変更イベントを用意する必要もない
709デフォルトの名無しさん (テテンテンテン MMeb-BZqs)
2021/07/24(土) 13:39:01.39ID:1RH6PTqTM DateTime.Nowは設計失敗の産物って話、俺もどこかで読んだ記憶があったんだけど
おおもとのソースは書籍だったみたいだ
ググったら個人ブログの感想でこんなのが引っかかった
https://ufcpp.wordpress.com/2009/12/27/net-%e3%81%ae%e3%82%af%e3%83%a9%e3%82%b9%e3%83%a9%e3%82%a4%e3%83%96%e3%83%a9%e3%83%aa%e8%a8%ad%e8%a8%88/
おおもとのソースは書籍だったみたいだ
ググったら個人ブログの感想でこんなのが引っかかった
https://ufcpp.wordpress.com/2009/12/27/net-%e3%81%ae%e3%82%af%e3%83%a9%e3%82%b9%e3%83%a9%e3%82%a4%e3%83%96%e3%83%a9%e3%83%aa%e8%a8%ad%e8%a8%88/
710デフォルトの名無しさん (オイコラミネオ MM55-3Z6B)
2021/07/24(土) 13:48:21.00ID:8X55Gw1wM 海外のクソライブライブラリ使うとたまにそういうレベルでメソッドになったりプロパティになったり
非常に邪魔くさい
DateTime.NowがDateTime.Now()になったりDateTime.GetNow()になったりDateTime.GetInstance.Nowになったり
コロコロコロコロ変えてくる
ドキュメントが整備されてないからインテリセンスで推測して変更するしかない
非常に邪魔くさい
DateTime.NowがDateTime.Now()になったりDateTime.GetNow()になったりDateTime.GetInstance.Nowになったり
コロコロコロコロ変えてくる
ドキュメントが整備されてないからインテリセンスで推測して変更するしかない
711デフォルトの名無しさん (ワッチョイ b993-jIx1)
2021/07/24(土) 14:41:03.27ID:pChvHGUq0712デフォルトの名無しさん (ワッチョイ 695f-MYQi)
2021/07/24(土) 19:53:22.67ID:hjQXc5u90713デフォルトの名無しさん (ワッチョイ 1142-3Z6B)
2021/07/24(土) 20:51:57.91ID:jHuzu2oV0 俺ならModelの方にINotifyPropertyChangedを実装して、VMでは
ReadOnlyReactivePropertyで変更通知を中継するな
ReadOnlyReactivePropertyで変更通知を中継するな
714デフォルトの名無しさん (ワッチョイ 41e4-j2WC)
2021/07/25(日) 17:48:33.79ID:jAuNvB3l0 アドバイスを頂きたいです。
簡単なCRUD機能を持ったコンソールアプリがあり、EntityFrameworkを使用してSQL Serverとのやり取りを行っています。
このSQL Serverのデータベースを年毎に個々に持ちたいという要件が出てきました。
テーブル構成等は全く同じで2020年のデータベース、2021年のデータベースをそれぞれ立てるという形です。
ただ、毎年この作業の対応は出来ないので、コマンドを叩くだけのような自動化をしたいと考えております。
理由として社内の事情によりvisual studioを使用する事が難しい点があります。
その為、アプリ側でDBとの接続情報を変更して発行しなおす事がハードルが高いため、可能であれば自動化したいです。
データベースの作成はSQL文を使用すれば良いと思うのですが、EntityFrameworkを使用しているアプリ側への対応として、「接続するデータベースが変更された場合」という部分はどのように対応してよいか分かりません…。
CodeFirst、ModelFirstどちらの場合でもデータベースの変更に対応するにはやはりプログラム側で変更するしかないでしょうか?
データベースを年毎に分けた場合、過去のデータを参照したい時に年毎のデータベースそれぞれのDbContextの情報を作成しないと行けないと考えるとやはり自動化は無理でしょうか…
当方素人レベルなので良い案も浮かばず、何か少しでもアドバイス頂きたいです…。
長文大変失礼しました。
簡単なCRUD機能を持ったコンソールアプリがあり、EntityFrameworkを使用してSQL Serverとのやり取りを行っています。
このSQL Serverのデータベースを年毎に個々に持ちたいという要件が出てきました。
テーブル構成等は全く同じで2020年のデータベース、2021年のデータベースをそれぞれ立てるという形です。
ただ、毎年この作業の対応は出来ないので、コマンドを叩くだけのような自動化をしたいと考えております。
理由として社内の事情によりvisual studioを使用する事が難しい点があります。
その為、アプリ側でDBとの接続情報を変更して発行しなおす事がハードルが高いため、可能であれば自動化したいです。
データベースの作成はSQL文を使用すれば良いと思うのですが、EntityFrameworkを使用しているアプリ側への対応として、「接続するデータベースが変更された場合」という部分はどのように対応してよいか分かりません…。
CodeFirst、ModelFirstどちらの場合でもデータベースの変更に対応するにはやはりプログラム側で変更するしかないでしょうか?
データベースを年毎に分けた場合、過去のデータを参照したい時に年毎のデータベースそれぞれのDbContextの情報を作成しないと行けないと考えるとやはり自動化は無理でしょうか…
当方素人レベルなので良い案も浮かばず、何か少しでもアドバイス頂きたいです…。
長文大変失礼しました。
715デフォルトの名無しさん (ワッチョイ fbda-Th4Q)
2021/07/25(日) 17:54:33.09ID:AwazG5ML0 sqlserverで1年に1回ジョブながせばいいのでは?
今年分のdbは常に'hoge'って名前にして、1/1 0:00にhogeをデタッチして名前変更。
でhogeを新規作成
今年分のdbは常に'hoge'って名前にして、1/1 0:00にhogeをデタッチして名前変更。
でhogeを新規作成
716デフォルトの名無しさん (ワッチョイ 41e4-j2WC)
2021/07/25(日) 18:11:58.13ID:jAuNvB3l0 >>715
ありがとうございます。
通常使用するのは「hoge」固定とし、年が変わるごとに「hoge2020」「hoge2021」のように名前を付けて別物として扱うということですよね。
私もこれなら行けるかもと考えていたのですが、例えば過去のデータを参照したい場合に「hoge2020」「hoge2021」の情報をアプリ側が所持していないので参照出来ないのでは…と思い悩んでいました…。(先程コンソールアプリと記述してしまいました、すみません。正しくはフォームアプリです)
ありがとうございます。
通常使用するのは「hoge」固定とし、年が変わるごとに「hoge2020」「hoge2021」のように名前を付けて別物として扱うということですよね。
私もこれなら行けるかもと考えていたのですが、例えば過去のデータを参照したい場合に「hoge2020」「hoge2021」の情報をアプリ側が所持していないので参照出来ないのでは…と思い悩んでいました…。(先程コンソールアプリと記述してしまいました、すみません。正しくはフォームアプリです)
717デフォルトの名無しさん (ワッチョイ fbda-Th4Q)
2021/07/25(日) 18:27:49.79ID:AwazG5ML0 変更した情報をhogeのテーブルに持ち、クライアントへ渡しては?
hogeのConnStrInfoテーブル
ID, db_name, year
1, hoge_2018, 2018
2, hoge_2019, 2019
3, hoge_2020, 2020
これをクライアント側で取得し、動的に接続先を切り替える。
efだとConnection Stringをこねくり回すのはめんどいかもしれないけど
他に方法が思い浮かばない。
hogeのConnStrInfoテーブル
ID, db_name, year
1, hoge_2018, 2018
2, hoge_2019, 2019
3, hoge_2020, 2020
これをクライアント側で取得し、動的に接続先を切り替える。
efだとConnection Stringをこねくり回すのはめんどいかもしれないけど
他に方法が思い浮かばない。
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【無言】中国怒らせた高市首相→1週間だんまり、国民に実害も説明なし 中国問題を避けてスルー… ★4 [BFU★]
- 【いちご高騰】ヤマザキのクリスマスケーキ、いちご無し販売 [おっさん友の会★]
- 【日中対立】 朝日新聞のタイトル修正が中国逆ギレの火種か SNSで批判相次ぐ [♪♪♪★]
- ネット殺到「高市総理の責任」「完全に高市リスク」「負けるな」中国が水産物輸入停止→流石に総理批判の声も「どう責任取る?」 ★10 [樽悶★]
- 【音楽】『日本レコード大賞』各賞発表! 大賞候補にILLIT、M!LK、ふるっぱー、幾田りら、アイナ、ミセスら… 作詩賞は指原莉乃 [冬月記者★]
- 「ドラゴンボール」初の全世界キャラクター人気投票が開幕!212キャラからナンバーワンが決まる!! [ひかり★]
