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

Posted

技术标签:

【中文标题】如何使用实体框架将 RichTextBox 内容存储到 WPF 中的 SQLServer 数据库【英文标题】:How to Store RichTextBox Content to SQLServer Database in WPF using Entity Framework 【发布时间】:2019-03-13 21:28:50 【问题描述】:

我在使用实体框架将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 指令或程序集引用?)

我也确定通用代码不行。

【问题讨论】:

只是建议:在这里,您不要将标题更改为“已解决”,而是将答案标记为已接受。 注明,谢谢 【参考方案1】:

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

错误本身是不言自明的:

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

您有一个名为 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; 并返回 data,但 data 从未设置或填充数据 您定义 rtfText 并为其分配一些值,但不要对它做任何事情

【讨论】:

以上是关于如何使用实体框架将 RichTextBox 内容存储到 WPF 中的 SQLServer 数据库的主要内容,如果未能解决你的问题,请参考以下文章

如何将 BlockUIContainer 中 RichTextBox 的内容保存到 RTF 文件?

HOW TO:使用 Visual C# .NET 打印 RichTextBox 控件的内容

C# 如何获取richTextBox的文本内容

C# richtextbox背景设置成透明后,如何能看到richtextbox内录入的内容

如何使用 RichTextBox 显示 html 内容?

如何使用 C# 添加保存文件对话框