瀏覽標籤:

C#

[.NET Core] EFCore Generate DbModel

使用 EFCore 的時候沒有看有地方可以像 .NET Framework 可以直接使用 VS 新增 edmx 產生好資料庫的 Model 與 DbContext,這個時候就必須靠自己拉,不過當 Table 多的時候這樣人工慢慢新增 Model 有點智障,於是乎就上網找到了 EFCore Tool 有提供一段命令可以使用。

網址:https://docs.microsoft.com/zh-tw/ef/core/miscellaneous/cli/powershell

這裡就來簡單做個筆記

  1. 首先在 Package Manager Console 輸入指令安裝 EFCore Tool

  1. 若為 Win7 需要先裝 Windows Management Framework 3.0 否則會跟我一樣出現下面的錯誤
    錯誤畫面

  2. 檔案可以在 這裡 找到下載安裝並重開機。

  3. 產生 Model 前需注意一件事情就是密碼不能有 $ 符號,不然會跟我一樣鬼打牆一小時都找不到問題,我有嘗試使用單引號包起來,但依然無法成功連線

  4. 接著在 Package Manager Console 輸入指令 (適用於 Azure SQL DataBase)

  1. 接著就可以看到 VS 裡面跑出 DbModel 與 DbContext 囉 !!
       

[C#][Visual Studio 2017] 修改預設 class 存取範圍成 public

版本:Visual Studio 2017 Enterprise

路徑:

 

範本:

 

這樣就新增 class 時就會自己加上 public 囉

       

[SideProject] Gif 產生器

動機

原作者是 ruby 寫的 sorry

感覺頗有趣的就寫個 .NET 版來玩玩了

由於很懶所以沒有優化歡迎PR

專案說明

本專案是用 Visual Studio 2017 開發

基本上只要裝了微軟爸爸的 VS 後直接 F5 就可以執行了

若有問題歡迎發 Issues

連結

GitHub:https://github.com/shuangrain/SorryNet

Blog:https://blog.exfast.me/2018/03/side-project-gif-generator/

Demo:https://exfast-sorry.azurewebsites.net/

       

[SideProject] 財政部電子發票 API 測試工具

財政部電子發票 API 測試工具

這是我最近在串接財政部 API 時自己寫的測試工具,希望能讓大家在串接測試上更加方便。
歡迎 PR 財政部的 API 清單

操作說明

  • 環境變數
  1. 簽章 (Signature):將 Request 參數按照名稱排序並以 HMAC-SHA1 加密後加在 Query 後方傳送至財政部
  2. 測試環境:將資料傳送至財政部測試環境
  3. Client 模式:以另開新頁的方式呼叫財政部 API
  • 選擇 Api
    要測試的 API

  • 財政部加密用 Key
    財政部提供的 HMAC-SHA1 加密用 AppKey

  • Api 位置
    呼叫的 API 位置

  • Request
    傳送給財政部的資料

使用方法

  1. 開啟 /src/appsettings.json
  2. 將財政部提供的 AppKeyAppID 填上去
  3. 用 Visual Studio 2017 開啟並執行即可 !!

Api 新增

開啟 /src/Json/ApiList.json 且依照下面的參數新增 Api

參數介紹

參數名稱 參數說明
TypeName Api 類型 (依此欄位排序)
ApiName Api 名稱
ApiUrl Api 位置
Param Api 需傳送的參數範本 (參數 timeStamp, expTimeStamp, uuid, appID 會被自動取代)
       

[C#][LeetCode][Easy] 657. Judge Route Circle

心得:

控制機器人走路,且最後必須回到起點,把它當作XY軸來理解的話很快就可以解答。
右 X + 1, 左 X – 1, 上 Y + 1, 下 Y – 1,最後 X 與 Y 皆為0則回傳true

問題:

Initially, there is a Robot at position (0, 0). Given a sequence of its moves, judge if this robot makes a circle, which means it moves back to the original place.

The move sequence is represented by a string. And each move is represent by a character. The valid robot moves are R (Right), L (Left), U (Up) and D (down). The output should be true or false representing whether the robot makes a circle.

Example 1:

Example 2:

答案:

答案 – Linq:

 

       

[C#][ASP.NET WebAPI] 回傳 JSON 時忽略 null 欄位

當回傳JSON格式時通常都會直接傳送model,但又不是每個欄位都有用到就有會空值的欄位出現,這時想要將null的欄位隱藏就可以用這招啦。

 

在WebApiConfig.cs中的Register方法加入以下程式碼:

       

[C#][LeetCode][Easy] 535. Encode and Decode TinyURL

題目:

TinyURL is a URL shortening service where you enter a URL such as https://leetcode.com/problems/design-tinyurl and it returns a short URL such as http://tinyurl.com/4e9iAk.
Design the encode and decode methods for the TinyURL service. There is no restriction on how your encode/decode algorithm should work. You just need to ensure that a URL can be encoded to a tiny URL and the tiny URL can be decoded to the original URL.

心得:

這題實務上的話我應該會用資料庫來存key,簡單易用不是嗎?
不過要小心的是不能使用流水號來當作tinyurl的參數,
這樣會有被猜出key的可能性,可能就隨機產生一個短的字串並檢查不能重複來當key

我的答案(轉base64):

 

我的答案(guid):

 

       

[C#][LeetCode][Easy] 561. Array Partition I

問題:

Given an array of 2n integers, your task is to group these integers into n pairs of integer, say (a1, b1), (a2, b2), …, (an, bn) which makes sum of min(ai, bi) for all i from 1 to n as large as possible.

心得:
看到這題我第一個反應就是去找linq有沒有辦法分割陣列,然後再加總= =
不過LINQ效能沒有很好,看到最佳解答有提供一個不錯的方法。

我的答案:

最佳解答:

       

[C#][Linq][Expression] 將陣列分割成固定長度的小陣列

來源:[Snippet]在C#中将List分割成多个定长的小List

可以將一個很長很長很長的List分割成固定大小的List方便批次運算。

程式碼:

       

[C#][LeetCode][Easy] 617. Merge Two Binary Trees

問題:

Given two binary trees and imagine that when you put one of them to cover the other, some nodes of the two trees are overlapped while the others are not.

You need to merge them into a new binary tree. The merge rule is that if two nodes overlap, then sum node values up as the new value of the merged node. Otherwise, the NOT null node will be used as the node of new tree.

心得:

這題就是把兩個二元樹合併,我就想著最簡單遞迴來解決,看了最佳解答才發現如果為一邊null的話就可以直接用另外一邊來return更有效率,學習了。
我的答案:

最佳解答: