如何使用实体框架将RichTextBox存储到WPF中的SQLServer数据库中

时间:2018-10-09 07:16:36

标签: c# wpf entity-framework richtextbox

我遇到了一个非常令人沮丧的问题,即使用实体框架将RichTextBox格式化后存储到数据库中。

这是我的代码:

namespace simpleton
{
    /// <summary>
    /// Interaction logic for AddNewOE.xaml
    /// </summary>
    public partial class AddNewOE : Window
    {
        //db connection
        simpletonDBEntities _db = new simpletonDBEntities();

      public AddNewOE()
      {
        InitializeComponent();
      }

       private void insertobBtn_Click(object sender, RoutedEventArgs e)
       {
          db_entry newdb_entries = new db_entry()
          {
            ReportDetails = ConvertRtbToBytes(rtfText)
          };

          _db.ob_entries.Add(newOb_entries);
          _db.SaveChanges();  
       }

        public static byte[] ConvertRtbToBytes(string richTextBox)
        {
          byte[] data = null;
          string rtfText; //string to save to db
          TextRange tr = new TextRange(richTextBox.Document.ContentStart, richTextBox.Document.ContentEnd);
          using (MemoryStream ms = new MemoryStream())
          {
            tr.Save(ms, DataFormats.Rtf);
            rtfText = Encoding.ASCII.GetString(ms.ToArray());
          }
          return data;
        }

    }
}

我在ConvertRtbToBytes()函数上遇到错误:

  

“字符串”不包含“文档”的定义,找不到可以接受的扩展方法“文档”接受字符串类型的第一个参数(您是否缺少using指令或程序集引用?)

我也确定通用代码不正确。

2 个答案:

答案 0 :(得分:1)

您需要更加小心地描述问题,因为我怀疑您想在数据库中存储RichTextBox。我猜您想将RichTextBox的内容存储在数据库中。

错误本身是不言自明的:

  

“字符串”不包含“文档”的定义,找不到可以接受的扩展方法“文档”接受字符串类型的第一个参数(您是否缺少using指令或程序集引用?)

您有一个名为richTextBox且类型为string的参数,稍后您将尝试以这种方式使用该参数:

public static byte[] ConvertRtbToBytes(string richTextBox)
{
    // ...
    TextRange tr = new TextRange(richTextBox.Document.ContentStart, richTextBox.Document.ContentEnd);
    // ...
}

因此,您尝试访问Document的{​​{1}}属性,但是string没有string属性。您可能打算将参数设为Document类型。

话虽如此,您的代码还有许多缺陷,甚至无法编译:

在方法RichTextBox中:

  • insertobBtn_Click已使用,但从未定义
  • 您创建了一个名为rtfText的变量,但是尝试保存一个名为newdb_entries的变量

在方法newOb_entries中:

  • 您声明ConvertRtbToBytes并返回byte[] data = null;,但是data从未设置或填充数据
  • 您定义了data并为其分配了一些值,但对此不做任何事

答案 1 :(得分:0)

我终于想通了...

namespace simpleton
{
    /// <summary>
    /// Interaction logic for AddNewOE.xaml
    /// </summary>
    public partial class AddNewOE : Window
    {

        //db connection
      simpletonDBEntities _db = new simpletonDBEntities();

      public AddNewOE()
      {
        InitializeComponent();
      }

       private void insertobBtn_Click(object sender, RoutedEventArgs e)
       { 
          TextRange tr = new TextRange(rtbEditor.Document.ContentStart, rtbEditor.Document.ContentEnd);
          MemoryStream ms = new MemoryStream();
          tr.Save(ms, DataFormats.Rtf);
          string rtfText = Encoding.ASCII.GetString(ms.ToArray());

          db_entry newdb_entries = new db_entry()
          {
            ReportDetails = rtfText

          };

          _db.ob_entries.Add(newOb_entries);
          _db.SaveChanges();  
       }



    }