从Windows移植到Mono

时间:2018-02-13 16:11:48

标签: c# mono

我正在尝试将现有的Windows应用程序移植到Linux。

当我在Windows上使用Mono运行它时运行正常。当我在Linux机器上运行它时,我得到空引用异常。我已将其跟踪到此代码的最后一行:

DataTable dtResultRows = new DataTable();
this.Connect();
this.Connection.Open();

string query = "SELECT * FROM dbo.rp_users WHERE UserLogin = @UserLogin";
SqlCommand cmd = new SqlCommand(query, this.Connection);
cmd.Parameters.AddWithValue("@UserLogin", login);
SqlDataAdapter sda = new SqlDataAdapter (cmd);
sda.Fill (dtResultRows);

发布sda.Fill命令以某种方式处理这个,sda,甚至dtResultsRows - 现在我被卡住了为什么会发生这种情况?

完整代码:

using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using RejestratorProdukcji.Entity;
namespace RejestratorProdukcji.Repository
{
    public class UserRepository : Repository
    {
        public User GetUser(string login)
        {
            DataTable dtResultRows = new DataTable();

            using (this.Connect())
            {
                if (this.IsConnection())
                {
                    this.Connection.Open();

                    string query = "SELECT * FROM dbo.rp_users WHERE UserLogin = @UserLogin";
                    SqlCommand cmd = new SqlCommand(query, this.Connection);
                    cmd.Parameters.AddWithValue("@UserLogin", login);
                    SqlDataAdapter sda = new SqlDataAdapter (cmd);
                    sda.Fill (dtResultRows);

                    this.Connection.Close();
                }

                if (dtResultRows.Rows.Count > 0)
                {
                    User user = new User(dtResultRows.Rows[0]["UserLogin"].ToString(), dtResultRows.Rows[0]["UserName"].ToString(),
                        dtResultRows.Rows[0]["UserDescription"].ToString(), (bool)dtResultRows.Rows[0]["UserActive"]);

                    return user;
                }
                else
                {
                    throw new Exception("not exists.");
                }
            }
        }
    }
}

0 个答案:

没有答案