首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将SQL Server2012中具有DateTime类型的列带入WCF DataContract C#类?

如何将SQL Server2012中具有DateTime类型的列带入WCF DataContract C#类?
EN

Stack Overflow用户
提问于 2013-05-05 23:34:49
回答 2查看 115关注 0票数 0

如何将SQL Server2012中具有DateTime类型的列引入WCF DataContract C#类和SqlDataReader中。我必须先转换它吗?它在接口中的事实会有什么不同吗?

WCF服务是我在asp.net网格视图中SqlConnection的替代品,我对所有关于DateTime的信息感到困惑,我只是想知道,因为到目前为止,我所理解的是,在C#中,DateTime不被认为是一个实际的数据类型,那么这是如何工作的。

如果我把它变成一个字符串,它会说它做不到,那么在这一点上该怎么做呢?感谢您的任何帮助,您可以帮助理解这一点,并帮助我了解我可以采取的路线。

沮丧和孤立无援,琳达

这是我的InvoiceDB

代码语言:javascript
复制
namespace AbbeyRoadServiceLibrary
{
   [DataObject(true)]
   public class InvoiceDB
   {
      [DataObjectMethod(DataObjectMethodType.Select)]
      public static List<Invoice> GetInvoices(string customerid)
      {
          List<Invoice> invoiceList = new List<Invoice>();

          SqlConnection con = AbbeyRoadDB.GetConnection();

          SqlCommand cmd = new SqlCommand();
          cmd.CommandText = "select InvoiceNum,InvoiceDate,InvoiceTotal,Job,Status from Invoices where CustomerID = @CustomerID order by InvoiceNum";
          cmd.CommandType = CommandType.Text;
          cmd.Connection = con;
          cmd.Parameters.AddWithValue("@CustomerID", customerid);

          try
          {
              con.Open();
              SqlDataReader reader = cmd.ExecuteReader();

              while (reader.Read())
              {
                  Invoice i = new Invoice();
                  i.InvoiceNum = reader[0].ToString();
             // Thought I was to convert it but no happy code results from doing this in this  way!!
                  i.InvoiceDate = Convert.ToDateTime(reader[1]); 
                  i.InvoiceTotal = Convert.ToDecimal(reader[2]);
                  i.Job = reader[3].ToString();
                  i.Status = reader[4].ToString();

                  invoiceList.Add(i);
              }
              reader.Close();
          }
          catch (SqlException ex)
          {
              throw ex;
          }
          finally
          {
              con.Close();
          }

          return invoiceList;
      }
   }
}

我的界面代码主要是重要的部分!

代码语言:javascript
复制
public interface InterfaceInvoiceService
{
    [OperationContract]
    List<Customer> GetCustomer();

    [OperationContract]
    List<Invoice> GetInvoices(string customerid);
}

[DataContract]
public class Invoice
{
    string invoiceID = "";
    string invoicedate = "";  //I know this is not right but see below
    decimal invoicetotal = 0m;
    string job = "";
    string status ="";

    [DataMember]
    public string InvoiceNum
    {
        get { return invoiceID; }
        set { invoiceID = value; }
    }

    [DataMember]
    public DateTime InvoiceDate
    {
        get { return invoicedate; } // here it says that it cannot implicitly convert it to a string on return and value.
        set { invoicedate = value; }
    }

    [DataMember]
    public decimal InvoiceTotal
    {
        get { return invoicetotal; }
        set { invoicetotal = value; }
    }

    [DataMember]
    public string Job
    {
        get { return job; }
        set { job = value; }
    }
EN

回答 2

Stack Overflow用户

发布于 2013-05-05 23:53:37

在C#中,DateTime是一种数据类型。此外,您还可以使用auto-properties缩短代码

代码语言:javascript
复制
[DataContract]
public class Invoice
{
    [DataMember]
    public string InvoiceNum { get; set; }

    [DataMember]
    public DateTime InvoiceDate { get; set; }

    [DataMember]
    public decimal InvoiceTotal { get; set; }

    [DataMember]
    public string Job { get; set; }
}
票数 1
EN

Stack Overflow用户

发布于 2013-05-05 23:44:32

将变量的数据类型更改为DateTime as

代码语言:javascript
复制
DateTime invoicedate;

[DataMember]
public DateTime InvoiceDate
{
    get { return invoicedate; } 
    set { invoicedate = value; }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16386124

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档