如何使用 Entity Framework 在 WPF 中将 RichTextBox 内容存储到 SQLServer 数据库

How to Store RichTextBox Content to SQLServer Database in WPF using Entity Framework

我在使用 entity framework.

将格式化的 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() 函数上遇到错误:

'string' does not contain definition for 'Document' and no accessible extension method 'Document' accepting a first argument of type string could be found (are you missing a using directive or an assembly reference?)

我也确定通用代码不行

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

错误本身是不言自明的:

'string' does not contain definition for 'Document' and no accessible extension method 'Document' accepting a first argument of type string could be found (are you missing a using directive or an assembly reference?)

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

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

所以您正在尝试访问 stringDocument 属性,但是 string 没有 Document 属性 .您可能打算制作 RichTextBox.

类型的参数

也就是说,您的代码有更多缺陷,甚至无法编译:

在方法中 insertobBtn_Click:

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

在方法中 ConvertRtbToBytes:

  • 您声明 byte[] data = null; 和 return data,但 data 从未设置或填充数据
  • 您定义 rtfText 并为其分配一些值,但不对其进行任何操作