ラベル EntityFramework の投稿を表示しています。 すべての投稿を表示
ラベル EntityFramework の投稿を表示しています。 すべての投稿を表示

2017年5月30日火曜日

EntityFrameworkの接続文字列渡しで謎な現象・・・

EntityFrameworkの接続文字列渡しで謎な現象・・・



接続文字列を変数で渡して、Linqを実行すると、

System.Data.Entity.Core.EntityException: '基になるプロバイダーが Open で失敗しました。'

となる。

でも、m_ConnectionStringに設定された文字を直接代入すると、正常にデータ取得できる。




MYSystem.Database.Connection.ConnectionString = m_ConnectionString;
//MYSystem.Database.Connection.ConnectionString = "data source=MR4000\\SQLEXPRESS;initial catalog=MYSystem;persist security info=True;user id=MYSystem;MultipleActiveResultSets=True;App=EntityFramework;password=asdfgh+9;";

var Purge = MYSystem.M_PurgerCommodity.Where(x => x.PurgeCategory == "Rakuten").ToArray();


EntityFrameworkは、バグがある!?



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



2017年4月30日日曜日

EntityFrameworkの登場で、SQLを覚えなくても良くなったのか!?


EntityFrameworkの登場で、SQLを覚えなくても良くなったのか!?

SQLを一切使わずにデータ取得できる。

基本的は、データセットとあまり変わらないが、LINQをつかってSQLを発行するところがデータセットと異なるところ。


LINQを覚えるのかSQL知ってるから、そっちのが早いし速いって思うけれど、時代の流れ的にLINQをバシバシ使う時代になっているようだから、LINQでやるか。


一体同じことをする為に、何回やり方を変えさせるんだろうか・・・・・


因みにEntityFrameworkのコードファーストで取り掛かった場合、データベースやテーブルすらも自動的に作られていく。。。


もはやデータベースエンジニアが必要なくなってきたなぁ。。。。

因みにテーブルがあれば、下のModelクラスは全部勝手に生成される。

プログラムが全く必要ない世界。

自分には違和感だらけだけれども・・・



MYSystem.Context.cs
    public partial class MYSystemEntities : DbContext
    {
        public MYSystemEntities()
            : base("name=MYSystemEntities")
        {
        }
 
        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            throw new UnintentionalCodeFirstException();
        }
 
        public virtual DbSet<M_PurgerCommodity> M_PurgerCommodity { get; set; }
    }

M_PurgerCommodity.cs
public partial class M_PurgerCommodity
{
        public long PuageID { get; set; }         public string PurgeCategory { get; set; }
        public string PurgeCommodityCode { get; set; }
        public Nullable<System.DateTime> UpdateDate { get; set; }
        public string UpdateUser { get; set; }
        public Nullable<System.DateTime> CreateDate { get; set; }
        public string CreateUser { get; set; } }


実行
LINQでデータ取得しています。
            var MYSystem = new MYSystemEntities();

            var Purge = MYSystem.M_PurgerCommodity.Where(x => x.PurgeCategory == "Rakuten").ToArray();