我无法获得以下代码,只使用单个上下文触及单个数据库而不升级到MSDTC,并且在context.SaveChanges()上抛出异常:
public void DeleteGroupDetails(int groupId)
{
// Note there is no ambient tx
var thisIsNull = Transaction.Current;
using (var scope = new TransactionScope())
{
var thisIsNotNull = Transaction.Current;
using (var context = new MyDbEntities())
{
var deleted = context.tblGroups.Where(x => x.GroupID == groupId);
context.tblGroups.RemoveRange(deleted);
try
{
context.SaveChanges();
}
catch (Exception e)
{
Console.WriteLine(e);
}
}
//scope.Complete();
}
}
Run Code Online (Sandbox Code Playgroud)
例外情况是"基础提供程序在打开时失败." - 合作伙伴事务管理器已禁用其对远程/网络事务的支持.(HRESULT异常:0x8004D025)
注意:
连接字符串是:
connectionString ="metadata = res:// /ResourceAccess.MyDb.csdl|res:// /ResourceAccess.MyDb.ssdl|res://*/ResourceAccess.MyDb.msl;provider=System.Data.SqlClient;provider连接字符串="data source = wil-gvpsqldev01; initial …
我正在尝试设置选项卡标题的背景颜色,但它没有填充整个标题,而是在模板周围留有空白。我需要用背景色完全填充选项卡的标题。
以下是一些简单的代码来演示此行为:
<Window x:Class="WpfApplication7.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<TabControl Name="TabControl">
<TabControl.ItemTemplate>
<DataTemplate>
<Grid Background="BlueViolet">
<TextBlock Height="20" Width="60" Text="TEST"/>
</Grid>
</DataTemplate>
</TabControl.ItemTemplate>
</TabControl>
</Grid>
</Window>
Run Code Online (Sandbox Code Playgroud)
后面的代码:
using System.Windows;
using System.Windows.Controls;
namespace WpfApplication7
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
TabControl.Items.Add(new Grid());
}
}
}
Run Code Online (Sandbox Code Playgroud) 我正在寻找一个可以填充项目的数据结构,就像IEnumerator调用MoveNext()一样,但是当它到达列表的末尾时会自动循环回到开头.我可以想到两种方法来做到这一点,要么使用链接列表并将其链接到自身,要么只是编写逻辑来检查IEnumerator.Current是否为空并重置,两者都相当简单,但我想先检查是否存在在框架中已经可以做到这一点.
它看起来像这样:
public interface IInfiniteEnumerable<T>
{
bool MoveNext();
T Current();
}
Run Code Online (Sandbox Code Playgroud)
编辑:根据答案,这可以解决问题:
class Program
{
static void Main(string[] args)
{
var lst = new List<string>
{
"A",
"B",
"C"
};
IEnumerator<string> enumerator = lst.RepeatIndefinitely().GetEnumerator();
Console.WriteLine(enumerator.Current);
enumerator.MoveNext();
Console.WriteLine(enumerator.Current);
enumerator.MoveNext();
Console.WriteLine(enumerator.Current);
enumerator.MoveNext();
Console.WriteLine(enumerator.Current);
enumerator.MoveNext();
Console.WriteLine(enumerator.Current);
enumerator.MoveNext();
Console.WriteLine(enumerator.Current);
enumerator.MoveNext();
Console.WriteLine(enumerator.Current);
enumerator.MoveNext();
Console.WriteLine(enumerator.Current);
enumerator.MoveNext();
Console.WriteLine(enumerator.Current);
enumerator.MoveNext();
Console.WriteLine(enumerator.Current);
Console.ReadLine();
}
}
public static class Extensions
{
public static IEnumerable<T> RepeatIndefinitely<T>(this IEnumerable<T> source)
{
while (true)
{
foreach (var item in source)
{
yield return item; …Run Code Online (Sandbox Code Playgroud)