星期五, 3月 24, 2017

[SQL] MERGE 搭配 Linked Server

有個需求想要透過 Linked Server 搭配 MERGE 語法來同步資料,在 try 的時候才發現到,原來 MERGE 語法的 Target_Table 不能是遠端 Table,會出現下面這段錯誤訊息
MERGE 陳述式的目標不能是遠端資料表、遠端檢視或針對遠端資料表的檢視
MSDN 上也有找到相關說明,指出 Target_Table 不能是遠端資料表,但 Table_Source 可以喔

星期四, 3月 16, 2017

[X.Form] 設定 Label.Text

[Xamarin.Forms] 從XAML開始 教學影片中在 xaml 內指定 Label View 的 x:Name,就可以在 cs 檔案 (Code Behind) 內,直接指定 Label

該筆記內容是在 cs 內把 Label.Text 從預設的 Welcome to Xamarin Forms! 改為 Hello World to Xamarin Forms!

xaml
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage 
    xmlns="http://xamarin.com/schemas/2014/forms"
    xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
    xmlns:local="clr-namespace:App1"
    x:Class="App1.MainPage">

    <Label 
        x:Name="lbl"
        Text="Welcome to Xamarin Forms!" 
        VerticalOptions="Center" 
        HorizontalOptions="Center" />

</ContentPage>
cs 檔案
using Xamarin.Forms.Xaml;

namespace App1
{
    [XamlCompilation(XamlCompilationOptions.Compile)]
    public partial class MainPage : ContentPage
    {
        public MainPage()
        {
            InitializeComponent();

            lbl.Text = "Hello World to Xamarin Forms!";
        }
    }
}
[Xamarin] 設定 Label.Text

星期三, 3月 15, 2017

[X.Form] DataBinding - View to View

參考這兩篇文章的筆記
利用 Slider 控制兩個 Label 的 Rotate 和 FontSize 屬性,來了解 DataBinding

Xaml 內容
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:local="clr-namespace:DataBindingSample"
             x:Class="DataBindingSample.MainPage">

    <StackLayout
        BindingContext="{x:Reference Name = slider}">

        <Label 
            Text="ROTATION"
            FontAttributes="Bold"
            FontSize="Large"
            Rotation="{Binding Path=Value}"
            HorizontalOptions="Center"
            VerticalOptions="CenterAndExpand" />

        <Label 
            Text="FontSize"
            FontAttributes="Bold"
            FontSize="{Binding Path=Value}"
            HorizontalOptions="Center"
            VerticalOptions="CenterAndExpand" />

        <Slider 
            x:Name="slider"
            Maximum="360"
            VerticalOptions="CenterAndExpand" />

        <Label 
          Text="{
            Binding Value,
            StringFormat='Slider:{0:F0}'}"
          FontAttributes="Bold"
          FontSize="Large"
          HorizontalOptions="Center"
          VerticalOptions="CenterAndExpand" />

    </StackLayout>

</ContentPage>
  • 重點1
BindingContext="{x:Reference Name = slider}" 
// 可以寫成
BindingContext="{x:Reference slider}" 
// 省略 Name
  • 重點2
可以在各別 Label 內設定 BindingContext
<Label Text="ROTATION" BindingContext="{x:Reference Name = slider}">
<Label Text="FontSize" BindingContext="{x:Reference Name = slider}">
或是直接在 StackLayout 上設定 BindingContext
<StackLayout BindingContext="{x:Reference Name = slider}">
  • 重點3
Rotation="{Binding Path=Value}"
// 可以寫成
Rotation="{Binding Value}"
// 省略 Path
  • 重點4
Text="{Binding Value,StringFormat='Slider:{0:F0}'}"
StringFormat 用單引號包起來

顯示結果
[Xamarin] DataBindng 簡易範例

星期一, 3月 13, 2017

[X.Form] XamlCompilation

閱讀 [Xamarin.Forms] 從XAML開始 的筆記

重點:
  • 設定 XamlCompilation 可以讓 xaml 在編譯時期進行偵錯,而不是執行時才發現錯誤
  • XamlCompilation 是 attribute,可以放在 class、namespace 或 assembly 上
  • 要引用 using Xamarin.Forms.Xaml 才能使用
把 XamlCompilation 設定在 class、namespcae 或 assembly 上

[Xamarin] XamlCompilation-1

[Xamarin] XamlCompilation-2

在 xaml 內把 Text Property 故意改錯,執行時期才在模擬器上顯示錯誤

[Xamarin] XamlCompilation-3

在 class 上指定 XamlCompilation,編譯時期在錯誤清單內就會顯示異常

[Xamarin] XamlCompilation-4

星期五, 3月 03, 2017

Dapper

該篇單純紀錄 Dapper 使用範例,下面這三篇大神文章,有較多理論介紹

C# 環境建置 - MS SQL TSQL Script 在筆記最下方
App.Config 連線字串
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
    </startup>
 <connectionStrings>
  <add name="default" connectionString="Data Source=.\SQL2016;Initial Catalog=Demo;Integrated Security=True;" providerName="System.Data.SqlClient"/>
 </connectionStrings>
</configuration>

// Entity
public class Employee
{
    public int ID { get; set; }
    public string EmpName { get; set; }
    public DateTime HireDate { get; set; }
    public decimal Salary { get; set; }
}

public class Product
{
    public string ProdID { get; set; }
    public string ProdName { get; set; }
    public string ProdURL { get; set; }
    public ProductDetail PD { get; set; }
}

public class ProductDetail
{
    public int ID { get; set; }
    public string ProdID { get; set; }
    public string DetailName { get; set; }
}

// 顯示 Employee 資料
private static void ShowData(IEnumerable<Employee> data)
{
    foreach (Employee e in data)
    {
        Console.WriteLine(e.ID + " - " + e.EmpName.Trim() + " - " + e.HireDate.ToString("yyyy/MM/dd") + " - " + e.Salary);
    }
}