2017年5月3日水曜日

WPF+EntityFrameworkで簡単にログを残すソースの公開 -

WPF+EntityFrameworkで簡単にログを残すソースの公開 
How to use to PutActionLog on  WPF + EntityFramework

EntityFrameworkなら、ソースからデータベースの作成、テーブルの作成が自動で行えるので、下記のソースさえコピペして貰えれば、データベースが、Postgresだろうが、SqlServerだろうが、Oracleだろうが自動的に全部使えるようになると思います。

DataAccess.PutActionLogにて、IPアドレス、コンピュータ名等モロモロと、引数で渡した情報を+アルファを記録しています。


ActionLog.cs  モデル(Model)
    using System;
    using System.Collections.Generic;
    
    public partial class ActionLog
    {
        public int ActionLogID { get; set; }
        public string SystemName { get; set; }
        public string SystemVersion { get; set; }
        public string IpAddress { get; set; }
        public string TerminalID { get; set; }
        public string UserID { get; set; }
        public string FunctionName { get; set; }
        public string Condition { get; set; }
        public string ErrorText { get; set; }
        public Nullable<System.DateTime> CreateDate { get; set; }
        public Nullable<System.DateTime> UpdateDate { get; set; }
        public string Property1 { get; set; }
    }


context:コンテキスト
    using System;
    using System.Data.Entity;
    using System.Data.Entity.Infrastructure;
 
    public partial class MYSystemEntities : DbContext
    {
        public MYSystemEntities()
            : base("name=MYSystemEntities")
        {
        }
 
        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            throw new UnintentionalCodeFirstException();
        }
 
        public virtual DbSet<ActionLog> ActionLogs { get; set; }
    }

DataAccess.cs
        public void PutActionLog(String LoginUser, String strFunctionName, String strCondition)
        {

            using (var context = new MYSystemEntities())
            {

                System.Net.IPAddress ipaddres = null;
                System.Net.IPHostEntry ipHostEntry = System.Net.Dns.GetHostEntry(System.Net.Dns.GetHostName());

                foreach (System.Net.IPAddress ipAddr in ipHostEntry.AddressList)
                {
                    if (ipAddr.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork)
                    {
                        ipaddres = ipAddr;
                        break;
                    }
                }

                context.ActionLogs.Add(new ActionLog
                {
                    SystemName = System.Windows.Application.ResourceAssembly.GetName().Name,
                    SystemVersion = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString(),
                    IpAddress = ipaddres.ToString(),
                    TerminalID = System.Net.Dns.GetHostName(),
                    FunctionName = strFunctionName,
                    Condition = strCondition,
                    UserID = LoginUser,
                    UpdateDate = DateTime.Now,
                    CreateDate = DateTime.Now
                });

                context.SaveChanges();
            }

        }



Thank you for Reading



WPF Doeventの実装方法

WPF Doeventの実装方法




WPFはWindows.formsのように、Doeventsが用意されていない為、自分で実装する必要がある。

基本的にマイクロソフトのヘルプにサンプルがあるので、それをコピペで使用するだけなのだけれども、毎回探すのも不便なので、自分のブログに準備してみた。


        #region "DoEvents"
        private void DoEvents()
        {
            DispatcherFrame frame = new DispatcherFrame();
            var callback = new DispatcherOperationCallback(ExitFrames);
            Dispatcher.CurrentDispatcher.BeginInvoke(DispatcherPriority.Background, callback, frame);
            Dispatcher.PushFrame(frame);
        }
        private object ExitFrames(object obj)
        {
            ((DispatcherFrame)obj).Continue = false;
            return null;
        }
        #endregion 


コピペするだけで使えます。
どうぞどうぞ。


WPF-XAMLでGridに複数のボタンを配置する方法

WPF-XAMLでGridに複数のボタンを配置する方法



Windows.Frormsをやっているエンジニアは、まず、WPFでコントロールを画面上にペタペタ貼っていくだけで躓くと思う。

Androidエンジニアは、XAMLと同じレイアウトをXMLでやっているから問題ないと思うけれど。。


WPFのGridに複数のボタンを貼る方法をご紹介

Code.
                <Grid Margin="0,18,0,2">
                    <StackPanel Orientation="Horizontal">
                        <Button Name="btnRakutenToNextEngine" Content="楽天→ネクストエンジン" HorizontalAlignment="Left" VerticalAlignment="Top" Width="237" Height="51" FontSize="18" BorderBrush="#FF707070" Background="#FFFBFBFB" Click="CsvFind_Click" Margin="25,10,0,0" />
                        <Button Name="btnRakutenToWowma" Content="楽天→Wowma(DeNA)" HorizontalAlignment="Left" VerticalAlignment="Top" Width="237" Height="51" FontSize="18" BorderBrush="#FF707070" Background="#FFFBFBFB" Click="CsvFind_Click" Margin="25,10,0,0" />
                    </StackPanel>
                </Grid>


Result follow.

XAMLは、ボタンの中にボタンをデザインしたり、Windows.Formsと違って自由な変わりに、Android(アンドロイド)と同じようなルールがあるから、純粋なレガシーなWindowsエンジニアには敷居が高い世界かもしれない。


日本の大手Sierが昨今、技術的に後れを取っているのは、昔ながらのスタイルを捨てきれないかららしく、Javascriptすらまともにコーディング出来ないエンジニアが多いみたい。


在宅ワークなら、新しい技術を周りに合わせずに使っていいから凄く自由で高度なエンジニアになれる!!


今は、事務の人しか募集していないけれど、興味があれば、右下の

何かリクエストがあれば:Please request to me

からお問い合わせください!!


完全在宅なので、縛られない為、どこでも自由に仕事できます!!









My photo get over 2.5 million view on Google Map. グーグルマップで自分の撮った写真が250万回閲覧されました!

My photo get over 2.5 million view on Google Map. グーグルマップで自分の撮った写真が250万回閲覧されました!









何だかうれしい。
I'm so happy.



・・・が、Googleからは何ももらえない。
..., but I can not get anything from Google.


。。。。


。。。。


( ノД`)シクシク…