首页 > 解决方案 > 如何使用实体框架将 RichTextBox 内容存储到 WPF 中的 SQLServer 数据库

问题描述

我遇到了一个非常令人沮丧的问题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 指令或程序集引用?)

我也确定通用代码不行。

标签: c#wpfentity-frameworkrichtextbox

解决方案


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

错误本身是不言自明的:

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

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

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

因此,您正在尝试访问Documenta 的属性string,但string没有Document属性。您可能打算制作 type 的参数RichTextBox

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

在方法中insertobBtn_Click

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

在方法中ConvertRtbToBytes

  • 您声明byte[] data = null;并返回data,但data从未设置或填充数据
  • 你定义rtfText并赋予它一些价值,但不要对它做任何事情

推荐阅读